- 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
- 配置文件
spring:
redis:
#地址
host: localhost
#端口
port: 6379
#索引库
database: 1
#密码
password:
#超时时间
timeout: 5000ms
#其他配置
- 测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisApplicationTests {
// @Autowired
// private RedisTemplate redisTemplate;
@Resource
private RedisTemplate<String, Object> redisTemplate;
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Test
public void contextLoads() {
redisTemplate.opsForValue().set("test", 1);
int test = (int) redisTemplate.opsForValue().get("test");
System.out.println(test);
}
}
控制台输出:1
RedisTemplate和StringRedisTemplate是常用的模板
- StringRedisTemplate是RedisTemplate<String, String>的子类,
key和value序列化都是StringRedisSerializer,只能操作string类型- RedisTemplate注入的时候如果使用@Autowired则不能使用泛型
如果使用泛型可以使用@Resource注解进行注入(参考@Autowired和@Resource区别)- 如果想使用@Autowired注入并使用泛型,可以重新注册bean,第四步设置序列化也属于重新注册bean
- 设置序列化
@Configuration
public class BeanLoad {
/**
* 设置redisTemplate key序列化
* @param factory
* @return
*/
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory){
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(factory);
//将key的序列化设置成StringRedisSerializer
StringRedisSerializer keySerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(keySerializer);
redisTemplate.setHashKeySerializer(keySerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
作者公众号