- 内容提要
- 序
- 前言
- 第一部分 背景知识
- 第 1 章 Spring Data 项目
- 第 2 章 Repository:便利的数据访问层
- 第 3 章 使用 Querydsl 实现类型安全的查询
- 第二部分 关系型数据库
- 第 4 章 JPA Repository
- 第 5 章 借助 Querydsl SQL 实现类型安全的 JDBC 编程
- 第三部分 NoSQL
- 第 6 章 MongoDB: 文档存储
- 第 7 章 Neo4j:图数据库
- 第 8 章 Redis:键/值存储
- 第四部分 快速应用开发
- 第 9 章 使用 Spring Roo 实现持久层
- 第 10 章 REST Repository 导出器
- 第五部分 大数据
- 第 11 章 Spring for Apache Hadoop
- 第 12 章 使用 Hadoop 分析数据
- 第 13 章 使用 Spring Batch 和 Spring Integration 创建大数据管道
- 第六部分 数据网格
- 第 14 章 分布式数据网格:GemFire
- 关于封面
8.4 对象映射
能够将像计数器和字符串这样的简单值存储到 Redis 中是很棒的,但是通常也会需要存储更为丰富的互相关联的信息。在有些场景下,它们可能会是对象的属性。在另外的一些场景下,可能会是哈希的键和值。
通过使用 RedisSerializer,可以将对象存储为 Redis 中的值。但是,这样做的话,会很难单独地探查或检索对象的属性。在这种场景下,可能希望使用 Redis 哈希。将属性存储到一个哈希中,这样就可以将所有的属性作为 Map<String, String>取出,然后进行访问,也可以只引用哈希中的单个属性而不去涉及其他的属性。
在 Redis 中所有的事务都是 byte[],对于这个哈希的例子我们会使用简单的 String 作为键和值。对哈希的操作,与对其他值、集合等是一样的,要通过 RedisTemplate 的 opsForHash() 方法,如示例 8-10 所示。
示例 8-10 使用 HashOperations 接口
假设 Product 的 id 为 1,通过在 redis-cli 中使用 HKEYS 命令,可以列出哈希中所有的键,如示例 8-11 所示。
示例 8-11 列出哈希的键
尽管在本例中只是使用 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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论