使用StringRedisTemplate類操作redis

一、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 );
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章