Spring Data RedisTemplate:序列化Value和HashValue

时间:2014-06-16 08:10:39

标签: spring redis serializer

我尝试过以下教程: http://javakart.blogspot.in/2012/12/spring-data-redis-hello-world-example.html

我的问题与此有关: Weird redis key with spring data Jedis

我能够使用StringRedisSerializer来解决密钥和hashkeys。

<bean 
id="stringRedisSerializer" 
class="org.springframework.data.redis.serializer.StringRedisSerializer"/>

<bean 
id="redisTemplate" 
class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="jedisConnectionFactory" 
p:keySerializer-ref="stringRedisSerializer"
p:hashKeySerializer-ref="stringRedisSerializer" 
/>

但是我发现使用序列化程序获取值和hashvalue是一个问题。

我尝试添加这个:

p:valueSerializer-ref="stringRedisSerializer"
p:hashValueSerializer-ref="stringRedisSerializer"

但是提示错误: “用户无法转换为java.lang.String”

有人可以分享如何使用序列化程序来获取值/ hashvalue吗?

1 个答案:

答案 0 :(得分:9)

Redis将键和值存储为字符串。由持久层来处理解析。在示例中,User是POJO而不是String。我建议您使用JacksonJsonRedisSerializer而不是StringRedisSerializer。这样你就可以将json存储为你的价值。

<bean id="userJsonRedisSerializer" 
    class="org.springframework.data.redis.serializer.JacksonJsonRedisSerializer">
    <constructor-arg type="java.lang.Class" value="com.mycompany.redis.domain.User"/>
</bean>