spring-data-redis使用RedisTemplate模板儲存時鍵值與預設不一致的解決方法
阿新 • • 發佈:2019-02-06
一、背景
最近使用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> <propertyname="hashKeySerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/> </property> </bean>