【发布时间】:2021-01-14 11:06:29
【问题描述】:
我正在尝试从 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 的东西。
【问题讨论】:
-
确保引号是正确的(双引号;以及在键周围)并且 JSON 在缓存中有效。
-
从 redis.call 中检索
value工作正常。我正在节点中获取 json 值{"one":1,"two":"2","three":{"four":4}}。它以 json 对象的形式出现。问题是我需要在redis环境中执行一些昂贵的操作,而redis中value变量的类型是字符串。我认为当值返回时它会被 redis api 序列化,但是 cjson 不起作用的事实让我不这么认为。