本地idea部署和docker部署问题,连接同一个redis,idea项目的redis缓存,docker中取不到,docker中缓存的redis本地取不到
✅ 原因:idea本地代码实体类未进行代码混淆,docker代码实体类进行了混淆,导致对象存在,但是对象属性值为nul
debug反序列化源码如下 读取到的字段为A,实体类中为具体的属性,不存在A,找到问题所在
❓当时排查了如下几个方面
- 实体类是否进行序列化,序列化id是否指定
- 实体类注解是否有问题,是否存在set/get方法
- idea中和docker中使用的spring-boot-data-redis的jar版本是否一致
- redis使用的序列化是否一致
- redis指定value的序列化类JdkSerializationRedisSerialier,更换idea的jdk和docker一致
- 将存在问题的缓存放到和能正常取到的项目中进行测试,避免不同包存在不同的处理情况
- debug源码看是存储到redis就有问题,还是从redis取的有问题
🔖 最后终于找到是代码混淆的问题,代码混淆时排除实体类解决问题
ps: 看源码最终肯定能解决问题的
这次用了差不多两天一度要放弃了,还好坚持到最后解决的问题