项目中redisTemplate设置的key,redis客户端上查询不到的问题

Posted 业精于勤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目中redisTemplate设置的key,redis客户端上查询不到的问题相关的知识,希望对你有一定的参考价值。

再项目使用了redis储存key,测试需要在客户端删除对应的key,发现查询不到对应的key

redis客户端:


发现redisTemplate实际存进去的key会多了几个字符

原因:程序中对key没做序列化存储

如果你用redis客户端查询你想要的key,redisTemplate下面添加这两个属性

<property name="keySerializer">  
         <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />  
    </property>   
    <property name="hashKeySerializer">  
        <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />  
 </property> 

或者

    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer());
        redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        return redisTemplate;
    }

注意如果使用springboot会默认创建JdkSerializationRedisSerializer序列化类,我们需要自己定义redisTemplate对应的bean,且bean的名称必须为redisTemplate,否则springboot会默认创建

https://blog.csdn.net/morendap/article/details/105271043

以上是关于项目中redisTemplate设置的key,redis客户端上查询不到的问题的主要内容,如果未能解决你的问题,请参考以下文章

RedisTemplate方法详解

RedisTemplate方法详解

redisTemplate.getExpire(key,TimeUnit.SECONDS);

RedisTemplate 分页

redistemplate.expire为啥要设置失效时间

redistemplate查询大量key,单机scan扫描;RedisTemplate和StringRedisTemplate的区别