4

ネストされたプロパティが変更される可能性のあるハッシュがあるとします。

"key1": {
  "prop1": {
    "subprop1": "could_change"
  }
}

変更された情報が送信された場合prop1.subprop1、このプロパティでアトミック更新を実行できますか? 今は、という文字列としてnode_redis保存します。obj を JSON.stringify() する場合、オブジェクトを取得し、メモリ内のオブジェクトに解析し、編集してから、オブジェクトを文字列化して保存する必要があります。その間に何かが変更されたかどうかはわかりません。prop1'[object Object]'

このデータを別の方法で処理する必要がある場合、誰か説明してもらえますか? オブジェクト全体として取得する必要があるだけでなく、一部を更新できるようにする必要があるネストされた属性を持つオブジェクトがあります。

助けてくれてありがとう!

4

1 に答える 1

6

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"

必要に応じて、キーのJSONサブオブジェクトを編集するためにLuaでさらに高度なものを作成することもできます。

ロックの使用方法の例については、RedisSETNXコマンドのドキュメントをご覧ください。

于 2012-05-22T22:21:14.913 に答える