JSON.MSET
语法
JSON.MSET key path value [key path value ...]
- 可用版本
- Redis Open Source / JSON 2.6.0
- 时间复杂度
- 当路径评估为单个值时,时间复杂度为 O(K*(M+N)),其中 k 是命令中的键数量,M 是原始值的大小(如果存在),N 是新值的大小;或者当路径评估为多个值时,时间复杂度为 O(K*(M+N)),其中 M 是键的大小,N 是新值的大小乘以键中原始值的数量。
- ACL 类别
-
@json,@write,@slow,
根据指定的 key-path-value 三元组设置或更新一个或多个 JSON 值
JSON.MSET 是原子性的,因此,所有给定的添加或更新要么全部应用,要么全部不应用。客户端无法看到某些键已更新而其他键未更改的情况。
JSON 值是分层结构。如果在特定路径中更改值,嵌套值也会受到影响。
警告
启用集群模式时,所有指定的键必须位于同一个 哈希槽 上。必需参数
key
要修改的键。
path
要指定的 JSONPath。对于新的 Redis 键,path 必须是根路径。对于现有键,当整个 path 存在时,其中包含的值将被 json 值替换。对于现有键,当 path 存在,但除了最后一个元素以外,将添加一个带有 json 值的新子元素。
value
要在指定路径设置的值。
返回值
JSET.MSET 返回一个简单的字符串回复:如果执行成功则返回 OK,如果设置新值失败则返回 error。
有关回复的更多信息,请参阅 Redis 序列化协议规范。
示例
在多个键中添加新值
redis> JSON.MSET doc1 $ '{"a":1}' doc2 $ '{"f":{"a":2}}' doc3 $ '{"f1":{"a":0},"f2":{"a":0}}'
OK
redis> JSON.MSET doc1 $ '{"a":2}' doc2 $.f.a '3' doc3 $ '{"f1":{"a":1},"f2":{"a":2}}'
OK
redis> JSON.GET doc1 $
"[{\"a\":2}]"
redis> JSON.GET doc2 $
"[{\"f\":{\"a\":3}}]"
redis> JSON.GET doc3
"{\"f1\":{\"a\":1},\"f2\":{\"a\":2}}"另请参阅
JSON.SET | JSON.MGET | JSON.GET