1. 程式人生 > >spring-data-redis使用RedisTemplate模板儲存時鍵值與預設不一致的解決方法

spring-data-redis使用RedisTemplate模板儲存時鍵值與預設不一致的解決方法

一、背景

最近使用spring-data-redis 和jedis 操作redis時發現儲存在redis中的key不是程式中設定的string值,前面還多出了許多類似\xac\xed\x00\x05t\x00這種字串

二、原因

spring-data-redis的RedisTemplate<K, V>模板類在操作redis時預設使用JdkSerializationRedisSerializer來進行序列化
private RedisSerializer<?> defaultSerializer = new JdkSerializationRedisSerializer();
private RedisSerializer keySerializer = null; private RedisSerializer valueSerializer = null; private RedisSerializer hashKeySerializer = null; private RedisSerializer hashValueSerializer = null;

三、解決方法

將keySerializer,hashKeySerializer替換為StringRedisSerializer 可以採用注入的方式:
<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> <property
name="hashKeySerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/> </property> </bean>