Redis-Lua解码Json返回空表



我正试图从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

返回到节点的结果是[]

我试图用行返回类型:return type(obj),结果返回为一个表。呼叫return type(value)给我string。为什么cjson没有对实际对象进行解码?还有其他东西可以用来将字符串解码为json吗。

我找到了问题。看起来node并没有序列化解码后的lua-json对象,它只返回一个空数组[]。不过它是用lua解码的。以下代码在节点中返回一个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中的字符串。

最新更新