springboot整合redis

添加依赖

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

配置

1
2
3
4
5
6
7
8
9
10
11
12
13
spring:
redis:
#地址
host: localhost
#端口
port: 6379
#索引库
database: 0
#密码
password:
#超时时间
timeout: 5000ms
#其他配置

测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@SpringBootTest
public class MyTests {

// @Autowired
// private RedisTemplate redisTemplate;

@Resource
private RedisTemplate<String, Object> redisTemplate;

@Test
public void set() {
redisTemplate.opsForValue().set("test", "test");
String test = (String) redisTemplate.opsForValue().get("test");
System.out.println(test);
}
}

RedisTemplate和StringRedisTemplate是常用的模板

  1. StringRedisTemplate是RedisTemplate<String, String>的子类,
    key和value序列化都是StringRedisSerializer,只能操作string类型
  2. RedisTemplate注入的时候如果使用@Autowired则不能使用泛型,
    如果使用泛型可以使用@Resource注解进行注入(参考@Autowired和@Resource区别)
  3. 如果想使用@Autowired注入并使用泛型,可以重新注册bean

设置序列化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);

//将key的序列化设置成StringRedisSerializer
redisTemplate.setKeySerializer(RedisSerializer.string());
redisTemplate.setHashKeySerializer(RedisSerializer.string());
// 将value的序列化设置成GenericJackson2JsonRedisSerializer
redisTemplate.setValueSerializer(RedisSerializer.json());
redisTemplate.setHashValueSerializer(RedisSerializer.json());
// 生效
redisTemplate.afterPropertiesSet();
return redisTemplate;
}