JSON.SET - Amazon ElastiCache for Redis
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

JSON.SET

在路径中设置 JSON 值。

如果路径调用对象成员:

  • 如果父元素不存在,该命令将返回 NONEXISTENT 错误。

  • 如果父元素存在但不是对象,该命令将返回 ERROR。

  • 如果父元素存在并且是对象:

    • 如果成员不存在,当且仅当父对象是路径中的最后一个子对象时,才会将新成员附加到父对象。否则,该命令返回 NONEXISTENT 错误。

    • 如果成员存在,则其值将替换为 JSON 值。

如果路径调用数组索引:

  • 如果父元素不存在,该命令将返回 NONEXISTENT 错误。

  • 如果父元素存在但不是数组,该命令将返回 ERROR。

  • 如果父元素存在但索引超出界限,该命令返回 OUTOFBOUNDARIES 错误。

  • 如果父元素存在且索引有效,该元素将被新的 JSON 值替换。

如果路径调用对象或数组,该值(对象或数组)将被新的 JSON 值替换。

语法

JSON.SET <key> <path> <json> [NX | XX]

[NX | XX],其中您可以有 0 或 1 个 [NX | XX] 标识符。

  • key(必需)– JSON 文档类型的 Redis 键。

  • path(必需)– 一个 JSON 路径。对于新的 Redis 键,JSON 路径必须是根目录“.”。

  • NX(可选)– 如果路径是根目录,仅在 Redis 键不存在时设置该值。也就是插入新文档。如果路径不是根目录,仅在路径不存在时设置该值。也就是在文档中插入一个值。

  • XX(可选)– 如果路径是根目录,仅在 Redis 键存在时设置该值。也就是替换现有文档。如果路径不是根目录,则仅在路径存在时设置该值。也就是更新现有值。

返回值

  • 成功时使用简单字符串“OK”。

  • 如果未满足 NX 或 XX 条件,则为 Null。

示例

增强的路径语法:

127.0.0.1:6379> JSON.SET k1 . '{"a":{"a":1, "b":2, "c":3}}' OK 127.0.0.1:6379> JSON.SET k1 $.a.* '0' OK 127.0.0.1:6379> JSON.GET k1 "{\"a\":{\"a\":0,\"b\":0,\"c\":0}}" 127.0.0.1:6379> JSON.SET k2 . '{"a": [1,2,3,4,5]}' OK 127.0.0.1:6379> JSON.SET k2 $.a[*] '0' OK 127.0.0.1:6379> JSON.GET k2 "{\"a\":[0,0,0,0,0]}"

受限的路径语法:

127.0.0.1:6379> JSON.SET k1 . '{"c":{"a":1, "b":2}, "e": [1,2,3,4,5]}' OK 127.0.0.1:6379> JSON.SET k1 .c.a '0' OK 127.0.0.1:6379> JSON.GET k1 "{\"c\":{\"a\":0,\"b\":2},\"e\":[1,2,3,4,5]}" 127.0.0.1:6379> JSON.SET k1 .e[-1] '0' OK 127.0.0.1:6379> JSON.GET k1 "{\"c\":{\"a\":0,\"b\":2},\"e\":[1,2,3,4,0]}" 127.0.0.1:6379> JSON.SET k1 .e[5] '0' (error) OUTOFBOUNDARIES Array index is out of bounds