项目中某些功能上需要删除以某个字符串为前缀的缓存,但是在使用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>