我将我的对象存储在redis中,然后将它们序列化为json,然后将json转换为字符串。我希望能够使用redis编辑这些对象,因此节省了网络成本。
而不是做3个步骤:
我想简单地使用redis键,json键和json键的新值来执行set命令。
{ " ID" :" foo", "名称" :"远" }
我想使用脚本将此用户对象转换为以下内容:
{ " ID" :" foo", "名称" :" bar" }
我正在玩cjson.encode
和cjson.decode
,但无法想办法做到这一点。缺少lua如何访问json对象。
**********************回答*********************
我能够编写脚本。我错过了如何在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