RedisTemplate和StringRedisTemplate

本文探讨了在项目中遇到的session共享问题,详细分析了Spring Data Session Redis依赖引入后出现的反序列化异常。通过对比RedisTemplate与StringRedisTemplate的序列化方式,阐述了解决方案,即调整序列化配置以匹配Spring Session Redis的要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

最近项目中涉及到session共享,于是想把session存到redis中,于是引入spring-data-session-redis这个依赖,但引入就报反序列化异常。查看项目中redis的代码,发现用的是StringRedisTemplate这个对象,那么先来了解一下RedisTemplate和StringRedisTemplate区别,再来解决下步问题。

区别

RedisTemplate和StringRedisTemplate功能类似者是封装了一些对redis的操作。区别就是于他们序列化的方式不一样

  • RedisTemplate使用的是 JdkSerializationRedisSerializer
  • StringRedisTemplate使用的是 StringRedisSerializer

RedisTemplate使用的序列类在在操作数据的时候,会将数据先序列化成字节数组然后在存入Redis数据库,这个时候打开Redis查看的时候,你会看到数据是以字节形式存储的,你根本看不到懂里面存的什么。
当然从Redis获取数据的时候也会默认将数据当做字节数组转化,这样就会导致一个问题,当需要获取的数据不是以字节数组存在redis中,就会无法获取数据。
所以当你要解决反序列化异常的时候,首先要清楚你项目中用的是哪个redis对象操作的redis库,然后再修改redis对象序列化方式和sping session redis的序列化方式一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值