基本环境搭建
RedisTemplate
@Autowired
StringRedisTemplate stringRedisTemplate;
@Autowired
RedisTemplate redisTemplate;
- 两者都是操作Redis数据库,区别如下:
- 两者的关系是
StringRedisTemplate
继承于RedisTemplate
RedisTemplate
使用的是JdkSerializationRedisSerializer
,存入数据会将数据先序列化成字节数组然后在存入Redis数据库;StringRedisTemplate
使用的是StringRedisSerializer
StringRedisTemplate
操作的K-V是字符串类型,RedisTemplate
操作的K-V是对象类型
- RedisTemplate类中提供了Redis常见的五种数据类型
stringRedisTemplate.opsForValue()[String(字符串)]
stringRedisTemplate.opsForList()[List(列表)]
stringRedisTemplate.opsForSet()[Set(集合)]
stringRedisTemplate.opsForHash()[Hash(散列)]
stringRedisTemplate.opsForZSet()[ZSet(有序集合)]
- 如果操作的是对象,则要考虑序列化与反序列化的问题,可参考
RedisAutoConfiguration.class
改变默认的序列化规则,Redis支持以下的序列化器

自定义序列化器@Configuration
public class MyRedisConfig {
@Bean
public RedisTemplate<Object, Employee> empRedisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
RedisTemplate<Object, Employee> template = new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer<Employee> serializer = new Jackson2JsonRedisSerializer<>(Employee.class);
template.setDefaultSerializer(serializer);
return template;
}
}
这样对象就保存为JSON
格式
CacheManager