请选择 进入手机版 | 继续访问电脑版

[Redis] 关于redisson缓存序列化的几枚大坑阐明

[复制链接]
查看62 | 回复6 | 2021-9-13 23:04:04 | 显示全部楼层 |阅读模式

redisson缓存序列化几枚坑

1、返回值为Map 的方法增长 @Cacheable后,T和K被范例 擦出了,为啥?

redisson团结 Spring使用 时,会有RedissonSpringCacheManager,将redissonClient自动 注入,别的 还有codec的概念,即序列化和反序列化,可以查看实现类,就几种实现,假设我们使用 org.redisson.codec.JsonJacksonCodec,可以看到,decode中,仅一个Object.class,即范型信息并未带入,故出现了题目

关于redisson缓存序列化的几枚大坑阐明

2、对于匿名内部类的滥用导致反序列化失败

你会想,匿名内部类有什么影响?

那么跟着我看下我们时常会写的一种Map写法:

  1. Map<String, Object> map = new HashMap(){{put("mykey", "test");}};
复制代码

这种方式有什么题目 呢,这就涉及到匿名内部类声明方式在实际 编译时是怎样 存在于class文件中的

  1. ...
  2. $1 extends HashMap{
  3. ...
  4. }
  5. ...
复制代码

也就是新天生 了一个匿名范例 ,而这个范例 在反序列化时是没办法找到构造函数的,故而是有题目 的。

按上面写法后,序列化时,存储的是xxx$1这个匿名范例 ,以是 反序列化也就失败了。

redis的坑(序列化、scan)

迩来 做的一个项目用到redis,必要 使用 redis对数据举行 缓存,用户的动作也会更新redis中的数据,为了方便管理,采用了hash的方式。神坑就此开始。

最开始是序列化的坑

使用 包装的ByteArrayRedisTemplate时,对象存入redis之后,rdm可以查看到,但是程序内里 取出来是乱码,使用 原生的RedisTemplate就不会出现这个题目 ,后来发现是对象包装的题目 ,原生的RedisTemplate中支持将value设置为对象,但是包装的ByteArrayRedisTemplate只能用byte[],以是 我这边先把对象转为json,然后json转为byte[],再写入redis,取数据的时间 ,查redis的效果 是byte[],然后转为json,再转为对象,就没题目 了。

但是!!!不知道什么缘故起因 ,如许 做之后rdm中查不到这个key了,大概 是redis版本和rdm版本不兼容的题目 ,这个有待验证。你看到的统统 不肯定 存在,你看不到的也不肯定 不存在,当个码农还要思索 这些哲学题目 。。。

还有一个坑

spring整合的redis是不支持scan指令的,而且不只是scan指令,基本上全部 搂全量的指令都被克制 ,当然,像keys之类的指令还是能用,但是在生产环境下万万 不要使用 ,由于 很轻易 壅闭 ,业务动不动就停几秒,很尴尬。而且现在 大部分在生产环境下使用 的redis都是用codis包装的,codis更绝,直接克制 使用 那些指令,同道 们可以本身 动手搜一下,被克制 的指令还是挺多得,我第一次看还以为本身 看错了,尼玛禁了一大半,搂全量的指令全部被禁。不过如许 做的好处就是数据安全,使用 scan指令的弊端 捞数据的软件也不在少数。

末了 项目只能放弃使用 redis了,由于 我必须得搂全量。。。通过这个变乱 也懂得了,代码开发 肯定 要一边开发 一边测试(本身 测试),不然有的坑,掉进去了都不知道,还在屁颠屁颠的往里刨,末了 把本身 埋了。

以上为个人履历 ,盼望 能给大家一个参考,也盼望 大家多多支持脚本之家。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

avatar 聚雅阁砚堂 | 2021-9-17 18:34:41 | 显示全部楼层
顶顶更健康!
回复

使用道具 举报

avatar 成圣 | 2021-9-18 08:12:14 | 显示全部楼层
白富美?高富帅?
回复

使用道具 举报

avatar 123457730 | 2021-9-20 22:36:17 | 显示全部楼层
被admin楼主的逻辑打败了!
回复

使用道具 举报

avatar 鬼子进了村部 | 2021-9-21 21:56:49 | 显示全部楼层
视死如归的架势啊!
回复

使用道具 举报

avatar 普通人物怨 | 2021-9-23 04:26:11 | 显示全部楼层
祖国尚未统一,我却天天灌水,好内疚!
回复

使用道具 举报

avatar dw3995 | 2021-9-23 04:26:15 | 显示全部楼层
今天过得很不爽!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则