当前位置:   article > 正文

Redis 基于 Hessian 序列化和反序列化出现的问题_redistemplate 使用 hessian序列化

redistemplate 使用 hessian序列化

目录

一 问题描述

1.1 前提

1.2 现象

二 问题分析

2.1 序列化和反序列化

2.2 现象分析

2.3 问题根源

三 问题解决


一 问题描述

1.1 前提

A、B 两个服务共享一套 Redis 集群,使用 Hessian 对数据进行序列化和反序列化操作。A、B 服务存在同一个 key,value 都是 User 对象。

1.2 现象

 A 服务往 Redis 集群写数据,B 服务从 Redis 集群读数据报错;B 服务往 Redis 集群写数据,A 服务从 Redis 集群读数据报错。

二 问题分析

2.1 序列化和反序列化

如图所示,将 java 对象转换成字节数组的过程被称为序列化,将字节数组恢复成 java 对象的过程被称为反序列化。

2.2 现象分析

 A 服务往 Redis 里面写数据的过程就是将 User 对象序列化到内存中,且 Hessian 序列化会带上对象的包路径 com.A.domain.User;当 B 服务从 Redis 读数据时,同样需要带上对象的包路径,由于 User 对象在 B 服务中的包路径为 com.B.domain.User,当进行反序列化时,操作失败。

2.3 问题根源

       由于 A、B 两个服务对于 User 这个对象的包路径不一致而出现的反序列化失败。

       基于 Hessian 协议的序列化和反序列化操作要求序列化和反序列化对象的包路径必须一致。

三 问题解决

       3.1 可以将 User 对象的包路径修改成一个。

       3.2 修改 Redis 集群序列化和反序列化协议,比如 JSONObject 。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/1011967
推荐阅读
相关标签
  

闽ICP备14008679号