使用 lua 在 redis 中操纵 json 对象

我将我的对象通过序列化成 json 并将其转换成字符串后存储在 redis 中。我想要通过 redis 编辑这些对象以便节约网络成本。

不必进行三个步骤:

  1. 从 redis 中获取对象
  2. 在代码中编辑对象,然后将其序列化成 json
  3. 将对象设置回 redis

我想要简单地使用 redis 命令、redis 键、json 键和 json 键的新值来执行设置操作。

{ "id" : "foo", "name" : "far" }

我想要使用脚本将此用户对象转换为以下内容:

{ "id" : "foo", "name" : "bar" }

我试着使用 cjson.encodecjson.decode ,但是无法找到一个方法来实现。不知道 lua 如何访问 json 对象。

**********************Answer*********************

我能够编写出脚本,我错过了 lua 编辑 json 对象的重要知识点。

eval "local e = redis.call('exists', KEYS[1])
if (e == 1) then local obj = cjson.decode(redis.call('get', KEYS[1]))
obj[ARGV[1]] = ARGV[2]
redis.call('set', KEYS[1], cjson.encode(obj))
return table.getn(KEYS)
else return -1 end"
1 key n rani
点赞