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