Node.js 在Redis中使用嵌套对象?

Node.js 在Redis中使用嵌套对象?,node.js,redis,Node.js,Redis,假设我有一个可以更改嵌套属性的哈希 "key1": { "prop1": { "subprop1": "could_change" } } 如果我收到prop1.subop1已更改的信息,我可以对此属性执行原子更新吗?现在,node\u redis将prop1保存为一个字符串,表示“[object object]”。如果我将JSON.stringify()转换为obj,那么我需要检索对象,解析到内存中的对象,进行编辑,然后对对象进行stringify并保存——同时不知道是否有什

假设我有一个可以更改嵌套属性的哈希

"key1": {
  "prop1": {
    "subprop1": "could_change"
  }
}
如果我收到
prop1.subop1
已更改的信息,我可以对此属性执行原子更新吗?现在,
node\u redis
prop1
保存为一个字符串,表示
“[object object]”
。如果我将JSON.stringify()转换为obj,那么我需要检索对象,解析到内存中的对象,进行编辑,然后对对象进行stringify并保存——同时不知道是否有什么变化

如果我用另一种方式处理这些数据,有人能解释一下吗?我有一个具有嵌套属性的对象,除了需要作为一个整体检索外,我还需要能够更新其部分属性


谢谢你的帮助

Lua脚本或锁模式可以解决您的问题

EVAL 'local obj = cjson.decode(redis.call("GET", "key1")); obj.prop1.subprop1 = ARGV[1]; redis.call("SET", "key1", cjson.encode(obj));' 0 "did_change"
如果愿意,您甚至可以在Lua中制作更高级的东西来编辑任何键的JSON子对象


有关如何使用锁的示例,请参阅。

注意:Lua脚本仅适用于Redis 2.6或更高版本。