使用StringRedisTemplate类操作redis

版权声明:本文为博主原创文章,转载请注明文章链接 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 );

猜你喜欢

转载自blog.csdn.net/zhanyu1/article/details/90760226