*Redis JSON.SET 命令

JSON.SET 在 RedisJSON 中设置指定路径的 JSON 值,如果路径不存在则创建。


*语法

JSON.SET key path value [NX | XX]

*参数说明

参数 类型 必填 说明
key String JSON 文档键名
path String JSONPath 路径
value String JSON 值
NX Flag 仅在路径不存在时设置
XX Flag 仅在路径已存在时设置

*返回值

  • OK:设置成功
  • Nil:条件不满足(NX/XX)
  • Error:JSON 格式无效

*时间复杂度

O(N),N 为设置的 JSON 值大小


*示例

*设置整个文档

> JSON.SET doc $ '{"a": 1, "b": 2}'
OK

*设置路径

> JSON.SET doc $.c '"hello"'
OK
> JSON.GET doc
"{\"a\":1,\"b\":2,\"c\":\"hello\"}"

*条件设置

> JSON.SET doc $.d '10' NX
OK
> JSON.SET doc $.d '20' NX
(nil)
> JSON.SET doc $.d '20' XX
OK

*常见错误

错误 原因 解决
ERR invalid JSON string JSON 格式无效 确认 value 是有效的 JSON
ERR path error 路径无效 确认路径语法正确

*最佳实践

  • 使用 JSONPath 精确定位设置路径
  • 使用 NX/XX 实现条件设置
  • 注意 JSON 字符串需要正确转义

*FAQ

Q1: 路径不存在会怎样? A: 会创建路径(如果路径语法允许)。

Q2: 可以设置数组元素吗? A: 可以,通过数组索引路径设置。

Q3: 和 JSON.MSET 有什么区别? A: JSON.SET 设置单个 key;JSON.MSET 设置多个 key。