JSON 的 JSON 格式。设置

语法
JSON.SET key path value [NX | XX]
可用:
Redis 堆栈 / JSON 1.0.0
时间复杂度:
O(M+N) 当 path 计算为单个值时,其中 M 是原始值的大小(如果存在),N 是新值的大小,O(M+N) 当 path 计算为多个值时,其中 M 是键的大小,N 是新值的大小 * 键中原始值的数量

将 JSON 值设置为pathkey

例子

必需参数

key

是修改的关键。

path

是 JSONPath 来指定。默认值为 root 。对于新的 Redis 键,$path必须是根。对于现有键,当整个pathexists,则它包含的值将替换为json价值。对于现有键,当path存在,则除了最后一个元素外,还会添加一个新的子元素,其中包含json价值。

仅当键是 JSON Object 中的 最后一个子项时,才将键(及其各自的值)添加到 JSON 对象(在 RedisJSON 数据类型键中)。path,或者它是添加到path.可选参数NXXX修改新 RedisJSON 数据类型键以及其中的 JSON 对象键的此行为。

value

is 值

可选参数

NX

仅当 key 尚不存在时,才设置该键。

XX

仅当键已存在时,才设置该键。

返回值

返回以下回复之一:

  • 一个简单的字符串回复:OK如果执行正确
  • nil
    • 如果key存在,但path不存在且无法创建
    • 如果NXXX条件未满足
  • error 如果key不存在且path不是 root (.$)

有关回复的更多信息,请参阅 Redis 序列化协议规范

例子

替换现有值
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}}"
path does not exist and cannot be created
redis> JSON.SET doc $ 1
OK
redis> JSON.SET doc $.x.y 2
(nil)
XX condition unmet
redis> JSON.SET nonexistentkey $ 5 XX
(nil)
redis> JSON.GET nonexistentkey
(nil)
key does not exist and path is not root
redis> JSON.SET nonexistentkey $.x 5
(error) ERR new objects must be created at the root

See also

JSON.GET | JSON.MGET


RATE THIS PAGE
Back to top ↑