Lua-scripting of een vergrendelingspatroon zou je probleem oplossen.
EVAL 'local obj = cjson.decode(redis.call("GET", "key1")); obj.prop1.subprop1 = ARGV[1]; redis.call("SET", "key1", cjson.encode(obj));' 0 "did_change"
Je zou zelfs iets geavanceerder kunnen maken in Lua voor het bewerken van de JSON-subobjecten van een sleutel als je dat zou willen.
Bekijk de Redis SETNX-opdrachtdocumenten voor een voorbeeld van het gebruik van een slot.