专门做汽车内饰的网站,.net 网站开发实例,网站翻页功能,处方药可以做网站吗【Spring连载】使用Spring Data访问Redis#xff08;七#xff09;----Hash Mapping 一、Hash Mappers二、Jackson2HashMapper 你可以使用Redis中的各种数据结构来存储数据。Jackson2JsonRedisSerializer可以转换JSON格式的对象。理想情况下#xff0c;通过使用plain键… 【Spring连载】使用Spring Data访问Redis七----Hash Mapping 一、Hash Mappers二、Jackson2HashMapper 你可以使用Redis中的各种数据结构来存储数据。Jackson2JsonRedisSerializer可以转换JSON格式的对象。理想情况下通过使用plain键JSON可以存储为值。通过使用Redis hashes你可以实现更复杂的结构化对象映射。Spring Data Redis提供了各种将数据映射到哈希的策略取决于用例 使用HashOperations和序列化程序进行直接映射使用Redis Repositories使用HashMapper和HashOperations
一、Hash Mappers
哈希映射器是将对象和MapK, V来回映射的转换器。HashMapper用于Redis Hashes。 有多种实施方式可供选择
BeanUtilsHashMapper使用Spring的BeanUtils。ObjectHashMapper使用对象到哈希映射。Jackson2HashMapper使用FasterXML Jackson。
以下示例展示了一种实现哈希映射的方法
public class Person {String firstname;String lastname;// …
}public class HashMapping {Resource(name redisTemplate)HashOperationsString, byte[], byte[] hashOperations;HashMapperObject, byte[], byte[] mapper new ObjectHashMapper();public void writeHash(String key, Person person) {Mapbyte[], byte[] mappedHash mapper.toHash(person);hashOperations.putAll(key, mappedHash);}public Person loadHash(String key) {Mapbyte[], byte[] loadedHash hashOperations.entries(key);return (Person) mapper.fromHash(loadedHash);}
}二、Jackson2HashMapper
Jackson2HashMapper通过使用FasterXML Jackson为域对象(domain objects)提供Redis Hash映射。Jackson2HashMapper可以将顶级属性映射为哈希字段名还可以选择展平(flatten)结构。简单类型映射到简单值。复杂类型嵌套对象、集合、映射等表示为嵌套JSON。 扁平化(Flattening)为所有嵌套属性创建单独的哈希条目并尽可能将复杂类型解析为简单类型。 举例有以下类及其包含的数据结构
public class Person {String firstname;String lastname;Address address;Date date;LocalDateTime localDateTime;
}public class Address {String city;String country;
}下表展示了前面类中的数据如何在一般映射中显示: 表 1. 一般映射
Hash FieldValuefirstnameJonlastnameSnowaddress{ “city” : “Castle Black”, “country” : “The North” }date1561543964015localDateTime2018-01-02T12:13:14
下表展示了上述类中的数据在扁平flat映射中的显示方式: 表 2. Flat映射
Hash FieldValuefirstnameJonlastnameSnowaddress.cityCastle Blackaddress.countryThe Northdate1561543964015localDateTime2018-01-02T12:13:14
扁平化要求所有属性名称不干扰JSON路径。使用展平flattening时不支持在映射key中使用点或括号也不支持将其用作property名称。生成的哈希无法映射回对象。 java.util.Date 和 java.util.Calendar用毫秒表示。如果jackson-datatype-jsr310在类路径上JSR-310日期/时间类型将序列化为它们的toString形式。