005 spring-data-redis的序列化反序列化

前言:

1、基于spring-boot工程实验,使用spring-data-redis进行说明;

2、spring-data-redis提供了redisTemplate、stringRedisTemplate对redis进行操纵;

3、spring-data-redis提供的redisSerializer如下图:

4、stringRedisTemplate默认使用StringRedisSerializer序列化器;

5、redisTemplate默认使用JdkSerializationRedisSerializer;

实验详述如下:

1、boot版本、redis版本如下:

 

 

2、redis配置项如下:

3、修改redisTemplate默认序列化器;

1)key的序列化器,可通过setKeySerializer进行设置;

2)value的序列化器,可通过setValueSerializer进行设置;

4、保存实体结构如下:

当使用JdkSerializationRedisSerializer器,实体类需实现Serializable接口;

5、key使用StringRedisSerializer序列化,value使用JdkSerializationRedisSerializer,使用redisTemplate保存、读取person对象;

结果如下:

1)对象保存时,被JdkSerializationRedisSerializer序列化,然后保存进了redis,结构如下图:

2)对象读取出时,被JdkSerializationRedisSerializer反序列化成Person对象;

6、key使用StringRedisSerializer器,value使用GenericJackson2JsonRedisSerializer器,使用redisTemplate保存、读取person对象;

结果如下:

1)对象保存时,被GenericJackson2JsonRedisSerializer序列化,将对象的classType及对象信息保存进了redis,结构如下图:

2)对象读取出时,被GenericJackson2JsonRedisSerializer根据里面的class信息反序列化成Person对象;

7、使用自定义方式保存、读取对象;

1)保存对象进redis,其本质都是将对象,根据某种规则,变成字符串,保存进去。读取的时候,将字符串读取出来,然后根据该规则的反转,将字符串变为对象;

2)在7这种方式中,还是沿用obj2Json、json2Obj的方式进行实现;

3)redis操纵,使用stringRedisTemplate;

4)json转换,使用jackson;

结果如下:

1)对象保存时,被jackson序列化为json字符串,保存进redis,如下图:

2)对象读取时,根据传入的classType,反序列化为person对象;

8、对比5、6、7方式;

1)JdkSerializationRedisSerializer序列化内容冗余,占用内存最高;

2)GenericJackson2JsonRedisSerializer序列化内容仅冗余了class信息,内存占用少;

3)自定义jackson序列化,内容不冗余,内存占用最少;

4)基于100万条数据存、读测试下,6、7方式在性能上几乎相同。

9、demo地址:

https://github.com/haishui211/redisRep.git

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值