使用lua操作redis中的json对象

时间:2017-03-22 06:30:14

标签: json lua redis eval

我将我的对象存储在redis中,然后将它们序列化为json,然后将json转换为字符串。我希望能够使用redis编辑这些对象,因此节省了网络成本。

而不是做3个步骤:

  1. 从redis获取对象
  2. 在代码中编辑对象,然后将其序列化为json
  3. 在redis中设置对象
  4. 我想简单地使用redis键,json键和json键的新值来执行set命令。

      

    {       " ID" :" foo",       "名称" :"远" }

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

      

    {       " ID" :" foo",       "名称" :" bar" }

    我正在玩cjson.encodecjson.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
    

0 个答案:

没有答案