您的位置:首页 > 数据库 > Redis

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

  • 点赞
  • 收藏
  • 分享
  • 文章举报
bailan8483 发布了0 篇原创文章 · 获赞 0 · 访问量 90 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: