我使用的是Redisson的RMapCache结构,因为它支持按生存时间驱逐的条目以及设置映射的最大大小。尽管Java中的所有工作都没有问题,但我发现使用相同Redis实例的NodeJS应用程序无法从相同的底层HSET结构获取值。Redisson - RMapCache将2个额外的字节前缀为
的问题是,预先考虑Redisson 2个字节到HSET每个值时RMapCache使用:
花一些时间在Redisson源代码挖后,我发现在插入过程中,使用的Lua脚本具有下列行:
local val = struct.pack('dLc0', tonumber(ARGV[4]), string.len(ARGV[6]), ARGV[6]);
redis.call('hset', KEYS[1], ARGV[5], val);
ARGV [6]是值本身,因此其他的两个字节是:在MI
- 最大空闲时间lliseconds(可以通过把方法)
- 长度值
这实际上使Redis的HSET从其他语言或其他Java客户端,然后Redisson无法使用。
有人遇到同样的问题,并知道如何处理它?