*Redis JSON.DEL 命令
JSON.DEL 在 RedisJSON 中删除指定路径的值。如果路径是根路径,则删除整个 key。
*语法
JSON.DEL key [path]
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | JSON 文档键名 |
| path | String | 否 | JSONPath 路径,默认根路径 $ |
*返回值
- Integer:删除的元素数量
*时间复杂度
O(N),N 为删除的元素数量
*示例
*删除路径
> JSON.SET doc $ '{"a": 1, "b": {"c": 2}}'
OK
> JSON.DEL doc $.b
(integer) 1
> JSON.GET doc
"{\"a\":1}"
*删除整个文档
> JSON.DEL doc
(integer) 1
> EXISTS doc
(integer) 0
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR key does not exist | key 不存在 | 确认 key 存在 |
*最佳实践
- 使用 JSONPath 精确定位要删除的部分
- 删除整个 key 时无需指定路径
- 注意删除操作的 O(N) 复杂度
*FAQ
Q1: JSON.DEL 和 JSON.FORGET 有什么区别? A: 两者功能相同,JSON.FORGET 是别名。
Q2: 删除不存在的路径会怎样? A: 返回 0。
Q3: 可以删除数组中的元素吗? A: 可以,通过指定数组元素路径删除。