JSON.SET
Syntax
JSON.SET key path value [NX | XX]
- Available in:
- Redis Stack / JSON 1.0.0
- Time complexity:
- O(M+N) when path is evaluated to a single value where M is the size of the original value (if it exists) and N is the size of the new value, O(M+N) when path is evaluated to multiple values where M is the size of the key and N is the size of the new value * the number of original values in the key
在key
中的path
处设置JSON值
必需的参数
key
是修改的关键。
path
是JSONPath指定的。默认是根$
。对于新的Redis键,path
必须是根。对于现有的键,当整个path
存在时,它包含的值将被json
值替换。对于现有的键,当path
存在时,除了最后一个元素外,将添加一个带有json
值的新子元素。
仅当它是path
中的最后一个子节点,或者是path
中新添加子节点的父节点时,将键(及其相应的值)添加到JSON对象(在RedisJSON数据类型键中)。可选参数NX
和XX
修改此行为,适用于新的RedisJSON数据类型键以及其中的JSON对象键。
value
是要在指定路径设置的值
可选参数
NX
仅当键不存在时才设置键。
XX
仅当键已存在时设置键。
返回值
JSET.SET 返回一个简单的字符串回复:如果执行正确则返回 OK
,如果未满足指定的 NX
或 XX
条件则返回 nil
。
有关回复的更多信息,请参阅 Redis 序列化协议规范。
示例
Replace an existing value
redis> JSON.SET doc $ '{"a":2}'
OK
redis> JSON.SET doc $.a '3'
OK
redis> JSON.GET doc $
"[{\"a\":3}]"
Add a new value
redis> JSON.SET doc $ '{"a":2}'
OK
redis> JSON.SET doc $.b '8'
OK
redis> JSON.GET doc $
"[{\"a\":2,\"b\":8}]"
Update multi-paths
redis> JSON.SET doc $ '{"f1": {"a":1}, "f2":{"a":2}}'
OK
redis> JSON.SET doc $..a 3
OK
redis> JSON.GET doc
"{\"f1\":{\"a\":3},\"f2\":{\"a\":3}}"