Redis值更新

时间:2012-05-23 12:10:52

标签: redis

我当前有一个redis数据集,其中键表示id和值为json。我需要在json中为每个userid(键)添加一个新实体。有没有现有的开源工具?我应该如何继续更新1M数据密钥。

1 个答案:

答案 0 :(得分:3)

有几种可能性:

  1. 这是使用Redis 2.6 Lua脚本执行此操作的一些伪代码。

    for userid in users:
        EVAL 'local obj = cjson.decode(redis.call("GET", KEY[1])); obj.subobj.newjsonkey = ARGV[1]; redis.call("SET", KEY[1], cjson.encode(obj));' 1 userid "new value!"
    
  2. 除此之外,您可能需要停止服务并使用GET和SET执行此操作,因为您可能没有适当的锁定机制。如果您可以强制执行锁定,请参阅http://redis.io/commands/setnx

  3. 有一些工具可用于更新rdb。 https://github.com/sripathikrishnan/redis-rdb-tools https://github.com/nrk/redis-rdb

  4. 请注意,此答案适用于我对Working with nested objects in Redis?

    的回答