Spring-data-redis 反序列化异常
环境:
1. 在做和客户的一个对接项目中,需要从客户的redis缓存中取一些基础数据,遇到了一些问题,在此记录:
2. 环境:
spring-data-redis(客户:2.0.7,我方:1.8.9)
spring-core:(客户:不知,我方:4.3.8)
心路历程:
1. 查看日志,里面确实有反序列化异常,然后,确认双方的序列化方式和反序列化方式对应关系,确定都是使用的spring-data-redis的默认序列化和反序列化;
org.springframework.data.redis.serializer.SerializationException: Cannot deserialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to deserialize payload. Is the byte array a result of corresponding serialization for DefaultDeserializer?; nested exception is java.io.InvalidClassException: org.springframework.util.LinkedCaseInsensitiveMap; local class incompatible: stream classdesc serialVersionUID = 7585587129342584356, local class serialVersionUID = 3417330771149596951
at org.springframework.data.redis.serializer.JdkSerializationRedisSerializer.deserialize(JdkSerializationRedisSerializer.java:82)at org.springframework.data.redis.core.AbstractOperations.deserializeValue(AbstractOperations.java:318)at org.springframework.data.redis.core.AbstractOperations$ValueDeserializingRedisCallback.doInRedis(AbstractOperations.java:58)
- 怀疑是我方项目中的其他组件和spring-data-redis中的依赖有冲突,挨个排查,发现并没有(这里可以使用idea查看pom文件的以来关系来确认)
- 后来查一篇博客,发现了一点问题。博客地址:http://976861.blog.163.com/blog/static/10295810020129172026291/
还有一篇博客,也不错,记录一下:http://cuiweiqing1988.iteye.com/blog/1907955
再附上一份关于java序列化版本号的说明:https://www.cnblogs.com/guanghuiqq/archive/2012/07/18/2597036.html - 后来怀疑可能是spring-core包版本的问题,索性写了一个spring-boot项目,测试了spring-core:4.3.8和4.3.13以及5.0.6三个版本的,通过测试,4.3.8的获取数据进行反序列化的时候,会抛异常。
- so,问题大概知道了,就解决吧。因为之前试过把spring-core以来同意上升到5.0.6,但是其他依赖(Hibernate)会报错。所以,就将版本升到了4.3.13,通过测试,ok。
- 总结一下
其实很简单,就是由于双方spring的依赖版本差异引起的,可以尽可能缩小差异(在本身项目允许的情况下)或者干脆两者使用统一版本;
好了,我就是自己记录一下,这个坑了我两天的问题。。。希望能对大家有所帮助!
Spring-data-redis 反序列化异常相关推荐
- Spring data redis 异常
2019独角兽企业重金招聘Python工程师标准>>> spring 集成 spring-data-redis 版本: spring低版本 + spring-data-redis 高 ...
- Spring认证中国教育管理中心-Spring Data Redis框架教程三
原标题:Spring认证中国教育管理中心-Spring Data Redis框架教程三 10.15.支持类 Packageorg.springframework.data.redis.support提 ...
- spring mvc Spring Data Redis RedisTemplate [转]
http://maven.springframework.org/release/org/springframework/data/spring-data-redis/(spring-data包下载) ...
- Spring Data Redis 实践
前言 Spring Data Redis是Spring Data大家族的一部分,提供了基于spring应用的简易配置与redis服务访问,它为存储与交互提供了低级(low-level)和高级的(hig ...
- Spring Data Redis 让 NoSQL 快如闪电(2)
2019独角兽企业重金招聘Python工程师标准>>> 把 Redis 当作数据库的用例 现在我们来看看在服务器端 Java 企业版系统中把 Redis 当作数据库的各种用法吧.无论 ...
- Spring Data Redis学海拾贝
简介: Redis redis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写.企业开发通常采用Redis来实现缓存.同类的产品还有memcache .memcached .Mo ...
- 使用Spring Data Redis操作Redis(集群版)
说明:请注意Spring Data Redis的版本以及Spring的版本!最新版本的Spring Data Redis已经去除Jedis的依赖包,需要自行引入,这个是个坑点.并且会与一些低版本的Sp ...
- Redis - Spring Data Redis 操作 Jedis 、Lettuce 、 Redisson
文章目录 官网 Jedis VS Lettuce Jedis Code POM依赖 配置文件 配置类 单元测试 Lettuce Code Redisson Code POM依赖 配置文件 配置类 单元 ...
- Spring Boot使用Spring Data Redis操作Redis(单机/集群)
说明:Spring Boot简化了Spring Data Redis的引入,只要引入spring-boot-starter-data-redis之后会自动下载相应的Spring Data Redis和 ...
- Java Spring Data Redis实战与配置参数详解 application.properties...
Redis作为开源分布式高并发缓存,使用范围非常广泛,主流互联网公司几乎都在使用. Java Spring Boot 2.0实战开发Redis缓存可以参考下面的步骤,Redis安装可以直接使用Linu ...
最新文章
- 【Qt】QtCreator中配置clang-format
- java log4j mysql_java – log4j:MySQL的JDBCAppender错误
- (完全解决)为什么运行.bat批处理文件但是只执行了.bat文件中的第一句(行)命令
- 美国出手管制五家中国超算企业
- openstack学习笔记三 创建第一个实例
- equals方法重写详解
- 如何测试一个网页登陆界面
- 2017-2018-2 20165329 实验五 网络编程与安全
- python获取html文本框内容_Python3处理HTML获取所需内容
- javascript Date日期类
- MAC上安装JDK后的所在目录
- web调试代理工具Whistle
- 小白学VUE——实现抖音时钟(NPM方式)
- Oracle 锁表查询和解锁方法
- spring框架对jdk版本要求
- html input 密文,HTML input text框显示为密文
- AR模型收敛:特征根在单位圆内
- 微信公众号,JS-SDK获取位置信息,并调起第三方地图App导航
- Java1Java2
- 【对话通信原理】第3章 信息的坐骑——信号