解决Spring的RedisTemplate.keys()无返回结果的问题

本文介绍了在使用RedisTemplate时遇到的无法通过前缀匹配获取缓存的问题,并提供了两种解决方案:一是使用StringRedisTemplate替代;二是配置keySerializer为StringRedisSerializer。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目中某些功能上需要删除以某个字符串为前缀的缓存,但是在使用RedisTemplate时,keys方法始终没有返回,如:

name_1:"AAA",name_2:"BBB",name_3:"CCC"

使用name_*查询,使用获取不到,返回的set集合size为0,但是直接使用完整的key是能获取到数据的

解决方法如下:

第一种,将

<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
    <property name="connectionFactory" ref="jedisConnectionFactory"/>
</bean>

改为StringRedisTemplate

<bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
    <property name="connectionFactory" ref="jedisConnectionFactory"/>
</bean>

第二种,配置属性keySerializer值为StringRedisSerializer,默认为JdkSerializationRedisSerializer

<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
    <property name="connectionFactory" ref="jedisConnectionFactory"/>
    <property name="keySerializer">
        <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
    </property>
</bean>

 

 

转载于:https://my.oschina.net/857359351/blog/883886

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值