主要区别如下:
1、采用的序列化策略不同
StringRedisTemplate采用的是String的序列化策略;RedisTemplate默认采用的是jdk的序列化策略
2、存的数据形式不同
StringRedisTemplate存的是字符串;RedisTemplate存的是字节数组,在redis-cli中看好像乱码
3、使用范围不同
StringRedisTemplate只能处理字符串类型的数据,如果存取复杂的对象,又不想做额外的处理,最好用RedisTemplate
@Configuration
public class RedisConfig {
@Bean
@ConditionalOnMissingBean(name = "redisTemplate")
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<Object, Object> template = new RedisTemplate<>();
//使用fastjson序列化
Jackson2JsonRedisSerializer<Object> fastJsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
//value的序列化采用fastJsonRedisSerializer
template.setValueSerializer(fastJsonRedisSerializer);
template.setHashValueSerializer(fastJsonRedisSerializer);
//key的序列化采用StringRedisSerializer
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}
参考博客:java处理redis的几种序列化策略