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>

文章来自:http://blog.csdn.net/aqzwss/article/details/45919267
© 2021 jiaocheng.bubufx.com  联系我们
ICP备案:鲁ICP备09046678号-3