对于最新的稳定版本,请使用 Spring Data Redis 3.3.1! |
对于最新的稳定版本,请使用 Spring Data Redis 3.3.1! |
哈希映射器
哈希映射器是映射对象到 a 和返回的转换器。 旨在与 Redis 哈希一起使用。Map<K, V>
HashMapper
有多种实现方式可供选择:
以下示例演示了实现哈希映射的一种方法:
public class Person {
String firstname;
String lastname;
// …
}
public class HashMapping {
@Resource(name = "redisTemplate")
HashOperations<String, byte[], byte[]> hashOperations;
HashMapper<Object, byte[], byte[]> mapper = new ObjectHashMapper();
public void writeHash(String key, Person person) {
Map<byte[], byte[]> mappedHash = mapper.toHash(person);
hashOperations.putAll(key, mappedHash);
}
public Person loadHash(String key) {
Map<byte[], byte[]> loadedHash = hashOperations.entries(key);
return (Person) mapper.fromHash(loadedHash);
}
}
杰克逊2HashMapper
Jackson2HashMapper
使用 FasterXML Jackson 为域对象提供 Redis 哈希映射。 可以将顶级属性映射为 Hash 字段名称,并可选择展平结构。
简单类型映射到简单值。复杂类型(嵌套对象、集合、映射等)表示为嵌套 JSON。Jackson2HashMapper
扁平化为所有嵌套属性创建单独的哈希条目,并尽可能将复杂类型解析为简单类型。
请考虑以下类及其包含的数据结构:
public class Person {
String firstname;
String lastname;
Address address;
Date date;
LocalDateTime localDateTime;
}
public class Address {
String city;
String country;
}
下表显示了上一个类中的数据在法线映射中的显示方式:
哈希字段 | 价值 |
---|---|
名字 |
|
姓氏 |
|
地址 |
|
日期 |
|
localDateTime |
|
下表显示了上一个类中的数据在平面映射中的显示方式:
哈希字段 | 价值 |
---|---|
名字 |
|
姓氏 |
|
地址.city |
|
地址.country |
|
日期 |
|
localDateTime |
|
扁平化要求所有属性名称不干扰 JSON 路径。使用拼合时,不支持在地图键中使用点或括号或用作属性名称。生成的哈希值无法映射回 Object。 |
java.util.Date 并用毫秒表示。JSR-310 如果日期/时间类型在类路径上,则序列化为其窗体。java.util.Calendar toString jackson-datatype-jsr310 |
哈希字段 | 价值 |
---|---|
名字 |
|
姓氏 |
|
地址 |
|
日期 |
|
localDateTime |
|
哈希字段 | 价值 |
---|---|
名字 |
|
姓氏 |
|
地址.city |
|
地址.country |
|
日期 |
|
localDateTime |
|
扁平化要求所有属性名称不干扰 JSON 路径。使用拼合时,不支持在地图键中使用点或括号或用作属性名称。生成的哈希值无法映射回 Object。 |
java.util.Date 并用毫秒表示。JSR-310 如果日期/时间类型在类路径上,则序列化为其窗体。java.util.Calendar toString jackson-datatype-jsr310 |