Springboot 项目使用 RMapCache 保存数据,发现值出现 \x00
\#1 使用 StringRedisTemplate 保存数据,可用
\#2 使用 RMapCache 保存数据, 出现\x00, 不可用
大致结构如下
demo project
源码自取
测试视频
springboot: 2.7.18
redisson: 3.26.1 / 3.21.0
redis: Redis-x64-5.0.14.1 / redis-5.0.5
redisson codec: JsonJacksonCodec / StringCodec
跟踪代码后发现,数据在执行lua脚本后出现了问题
然后将脚本放到 redis-cli 直接执行,数据也是异常的
eval "return struct.pack('dLc0', 0, string.len(ARGV[1]), ARGV[1])" 0 "test"
我要怎么修改
===== 关于 RedisTemplate 序列化回复 =====
我不知道为啥回复,刷新之后就消失了,再回复又重复,删除又两个都消失,在这里回复吧。
我并不是使用 RedisTemplate 来操作,而是使用的是 Redisson 的 RedissonClient 来进行操作
成功案例:直接使用 StringRedisTemplate ,demo 项目懒得配那么多,而且我也是成功了,上图#1
失败案例:使用 RMapCache<String, String> mapCache = redissonClient.getMapCache(name);
我的错误发生在 使用 mapCache.put(key, value) 后
如果要设置,也是设置 redissonClient 的 Codec,我尝试过 JsonJacksonCodec 和 StringCodec,没有效果。原因,原问题有解释
===== 关于 RedisTemplate 序列化回复 =====
RedisTemplate
如果不主动设置,默认使用的都是JdkSerializationRedisSerializer
,换成GenericJackson2JsonRedisSerializer
就好了。或者
补充
更新
用mapCache,是一定有这些特殊字符的,cache有最大存活时间。