版权声明:本文为博主原创文章,转载请注明文章链接 https://blog.csdn.net/zhanyu1/article/details/90760226
一、StringRedisTemplate与RedisTemplate区别
1、两者的关系是StringRedisTemplate继承RedisTemplate。
2、两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。
3、他们使用的序列化类不同:
- StringRedisTemplate默认采用的是String的序列化策略,即JdkSerializationRedisSerializer,保存的key和value都是采用此策略序列化保存的。存入数据会将数据先序列化成字节数组然后在存入Redis数据库
- RedisTemplate默认采用的是JDK的序列化策略,即StringRedisSerializer,保存的key和value都是采用此策略序列化保存的。
4、配置不同
RedisTemplate配置如下
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
{
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
template.setConnectionFactory(redisConnectionFactory);
template.setKeySerializer(jackson2JsonRedisSerializer);
template.setValueSerializer(jackson2JsonRedisSerializer);
template.setHashKeySerializer(jackson2JsonRedisSerializer);
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
StringRedisTemplate配置如下:(Redis的String数据结构)
RedisSerializer<String> stringSerializer = new StringRedisSerializer();
template.setKeySerializer(stringSerializer );
template.setValueSerializer(stringSerializer );
template.setHashKeySerializer(stringSerializer );
template.setHashValueSerializer(stringSerializer );