Redis Lua 解码 Json 返回空 table

Redis Lua decoding Json returning empty table

我正在尝试从 nodejs 在我的 Redis 实例中 运行 一个 lua 脚本。我在我的缓存中设置了一个 json 对象 {one:1, two:'2', three: {four: 4}} 然后 运行 lua 中的以下脚本:

local value = redis.call('get', 'myKey')
local obj = cjson.decode(value)
return obj

returns到节点的结果是[]

我尝试 return 带有以下行的类型:return type(obj) 结果返回为 table。调用 return type(value) 给我 string。为什么 cjson 不解码实际对象?还有什么我可以用来将我的字符串解码为 json.

我找到问题了。它看起来不像节点正在序列化解码的 lua json 对象,它只是 returns 一个空数组 []。它正在 lua 中解码。下面的代码returns节点中的一个json对象:

local value = redis.call("get", "myKey")
local obj = cjson.decode(value)
return cjson.encode(obj)

此外,以下代码正在返回 1

local value = redis.call("get", "myKey")
local obj = cjson.decode(value)
return obj.one

所以正在创建json对象,我认为redis包中的json序列化程序正在寻找来自lua的字符串。