Spring Data Redis入门示例:数据序列化 (四)
2020-02-07 07:30
429 查看
概述
RedisTemplate默认使用的是基于
JDK的序列化器,所以存储在
Redis的数据如果不经过相应的反序列化,看到的结果是这个样子的:
可以看到,出现了乱码,在程序层面上,不会影响程序的运行,但当出现数据错误,对数据进行排查时,就无从下手了。
序列化器
在Spring Data Redis中,用户自定义类型和存储数据之间的转换(反之亦然)由
org.springframework.data.redis.serializer包下的类进行处理。
这个包包含两种类型的序列化程序,它们负责序列化过程:
- 基于
RedisSerializer
的双向序列化器 - 通过
RedisElementReader
和RedisElementWriter
进行元素的读写(2.0引进的)
这两种类型的序列化器主要区别在于,RedisSerializer
主要序列化为byte[],RedisElementReader/RedisElementWriter
使用ByteBuffer
。
基于RedisSerializer
的序列化器有多种实现,可以直接使用,如: StringRedisSerializer
JdkSerializationRedisSerializer
(默认)OxmSerializer
(依赖于Spring OXM
)Jackson2JsonRedisSerializer/GenericJackson2JsonRedisSerializer
(依赖于jackson
)
序列化的范围
序列化可以应用到
Key,
Value,
HashKey,
HashValue上,在
RedisTemplate中,有四个属于与之对应:
keySerializer、
valueSerializer、
hashKeySerializer、
hashValueSerializer
基于Json的序列化
引入Jackson的maven依赖:
<jackson.databind.version>2.8.5</jackson.databind.version> <!-- jackson-databind --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.databind.version}</version> </dependency>
配置序列化器:
<!-- 缓存序列化方式 --> <!--对key的默认序列化器。默认值是StringSerializer --> <bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer" /> <!--是对value的默认序列化器,默认值是取自DefaultSerializer的JdkSerializationRedisSerializer。 --> <bean id="genericJackson2JsonRedisSerializer" class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer" />
重新配置RedisTemplate:
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"> <property name="connectionFactory" ref="jedisConnectionFactory"/> <property name="keySerializer" ref="stringRedisSerializer" /> <property name="valueSerializer" ref="stringRedisSerializer"/> <property name="hashKeySerializer" ref="stringRedisSerializer"/> <property name="hashValueSerializer" ref="genericJackson2JsonRedisSerializer" /> </bean>
重新运行上一节的示例,得到如下结果:
示例说明
1. 查看redis的管理工具是:RedisDesktopManager,下载地址:https://redisdesktop.com/download
转载于:https://www.cnblogs.com/Jxwz/p/8372306.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Spring Data Redis入门示例:Hash操作(七)
- Spring Data Redis入门示例:字符串操作(六)
- Spring Data Redis入门示例:基于RedisTemplate (三)
- spring-data-redis使用自定义序列化数据 使用 protobuf
- Spring Data Redis入门示例:程序配置(五)
- 关于Spring Data redis几种对象序列化的比较
- 关于Spring Data redis几种对象序列化的比较
- Spring-data-redis集成提交数据出现'maxActive'和‘maxWaitMillis’错误
- spring-data-redis序列化实践笔记
- Spring Data Redis提供的几种序列化的比较
- 关于Spring Data redis几种对象序列化的比较
- Spring-data-redis入门
- spring boot中关于redis 保存数据的序列化(数据库中的乱码问题)
- 关于Spring Data Redis存储时key value数据的乱码问题
- spring-data集成redis使用 数据集合池
- spring data redis使用示例
- Spring Data Redis提供的几种序列化的比较
- 关于Spring Data redis几种对象序列化的比较
- 使用 Spring data redis 结合 Spring cache 缓存数据配置
- 关于Spring Data redis几种对象序列化的比较