返回介绍

8.4 对象映射

发布于 2025-04-22 19:57:20 字数 1817 浏览 0 评论 0 收藏

能够将像计数器和字符串这样的简单值存储到 Redis 中是很棒的,但是通常也会需要存储更为丰富的互相关联的信息。在有些场景下,它们可能会是对象的属性。在另外的一些场景下,可能会是哈希的键和值。

通过使用 RedisSerializer,可以将对象存储为 Redis 中的值。但是,这样做的话,会很难单独地探查或检索对象的属性。在这种场景下,可能希望使用 Redis 哈希。将属性存储到一个哈希中,这样就可以将所有的属性作为 Map<String, String>取出,然后进行访问,也可以只引用哈希中的单个属性而不去涉及其他的属性。

在 Redis 中所有的事务都是 byte[],对于这个哈希的例子我们会使用简单的 String 作为键和值。对哈希的操作,与对其他值、集合等是一样的,要通过 RedisTemplate 的 opsForHash() 方法,如示例 8-10 所示。

示例 8-10 使用 HashOperations 接口

P133a

假设 Product 的 id 为 1,通过在 redis-cli 中使用 HKEYS 命令,可以列出哈希中所有的键,如示例 8-11 所示。

示例 8-11 列出哈希的键

P133b

P134a

尽管在本例中只是使用 String 作为哈希的值,但是可以使用任意的 RedisSerializer 作为模板的 hashValueSerializer。例如,如果想存储复杂的对象而不是 String,那么可能需要将模板中的 hashValueSerializer 替换为 org.springframework.data.redis.serializer. JacksonJsonRedisSerializer( http://static.springsource.org/spring-data/data-redis/docs/current/api/org/springframework/data/redis/serializer/
JacksonJsonRedisSerializer.html
)或者 org.springframework.data.redis.serializer.OxmSerializer( http://static.springsource. org/spring-data/data-redis/docs/current/api/org/springframework/data/redis/serializer/OxmSerializer.html ),前者会将对象序列化 JSON,而后者会使用 Spring OXM 对对象进行编组和解组(marshalling 和 unmarshalling)。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。