【问题标题】:Spring Data RedisTemplate: Serializing the Value and HashValueSpring Data RedisTemplate:序列化 Value 和 HashValue
【发布时间】:2014-08-06 00:14:07
【问题描述】:

我尝试按照本教程进行操作: http://javakart.blogspot.in/2012/12/spring-data-redis-hello-world-example.html

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

我能够使用 StringRedisSerializer 解决键和哈希键。

<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" 
/>

但是我发现对值和哈希值使用序列化程序是个问题。

我尝试添加这个:

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

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

谁能分享如何为值/哈希值使用序列化程序?

【问题讨论】:

  • 这似乎是您将用户对象序列化为字符串对象。相反,您可以通过编写“类用户实现 java.io.Serializable”将用户对象标记为可序列化,然后 java 默认序列化程序将自动处理。所以最好不要在 beans.xml 中配置任何与 "Serializer-ref=" 相关的内容

标签: spring redis serialization


【解决方案1】:

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>

【讨论】:

  • 我们可以在这里使用多个类作为 吗??
猜你喜欢
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
  • 2017-07-21
  • 2018-10-06
  • 2018-09-23
  • 1970-01-01
  • 2016-11-24
  • 1970-01-01
相关资源
最近更新 更多