RedisTemplate和StringRedisTemplate去区别

RedisTemplate

Spring 封装了RedisTemplate对象来进行Redis的各种操作,它支持所有的Redis原生的api。RedisTemplate位于spring-data-redis/   spring-boot-starter-data-redis包下

参数类型(Type Parameters)

K

   the Redis key type against which the template works (usually a String)

   模板中的Redis key的类型通常为String,如RedisTemplate

  注意:没有特殊情况,不要定义成RedisTemplate,否则根据里氏替换准则,使用的时候会造成类型错误

V

 the Redis value type against which the template works

 模板中中的Redis的类型

 

 RedisTemplate中定义了5种数据结构操作

redisTemplate.opsForValue();//操作字符串
redisTemplate.opsForHash();//操作hash
redisTemplate.opsForList();//操作list
redisTemplate.opsForSet();//操作set
redisTemplate.opsForZSet();//操作有序set

 StringRedisTemplate与RedisTemple

  • 前者集成后者
  • 数据不共通的。即StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据
  • SDR默认采用的序列化有两种。一种是String的序列化策略,一种是JDK的序列化策略;
  • StringRedisTemplate默认采用的是String 的序列化策略,保存的key和value都是采用的该策略序列化并保存的
  • RedisTemplate默认采用的是JDK的序列化策略,保存的 key和value都是采用此策略序列化并保存的

网上的redisTemplate配置如下

@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory)
{
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        RedisTemplate template = new RedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        template.setKeySerializer(jackson2JsonRedisSerializer);
        template.setValueSerializer(jackson2JsonRedisSerializer);
        template.setHashKeySerializer(jackson2JsonRedisSerializer);
        template.setHashValueSerializer(jackson2JsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
} 
  

Redis的String数据结构(推荐使用StringRedisTemplate)

若使用RedisTemplate需要改变序列化方式

RedisSerializer stringSerializer = new StringRedisSerializer();
        template.setKeySerializer(stringSerializer );
        template.setValueSerializer(stringSerializer );
        template.setHashKeySerializer(stringSerializer );
        template.setHashValueSerializer(stringSerializer );

 

 

 

你可能感兴趣的:(redis)