*Redis JSON.ARRPOP 命令
JSON.ARRPOP 在 RedisJSON 中从指定路径的数组中弹出(删除并返回)一个元素。
*语法
JSON.ARRPOP key [path] [index]
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | JSON 文档键名 |
| path | String | 否 | JSONPath 路径,默认根路径 $ |
| index | Integer | 否 | 弹出位置,默认 -1(末尾) |
*返回值
- String:被弹出的 JSON 值
- Nil:数组为空或路径不存在
- Error:目标不是数组
*时间复杂度
O(N),N 为数组长度,因为需要移动元素
*示例
*基本用法
> JSON.SET doc $ '{"arr": [1, 2, 3]}'
OK
> JSON.ARRPOP doc $.arr
"3"
> JSON.ARRPOP doc $.arr 0
"1"
> JSON.GET doc
"{\"arr\":[2]}"
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR path does not exist | 路径不存在 | 确认路径正确 |
| ERR path not an array | 目标不是数组 | 确认路径指向数组 |
*最佳实践
- 使用负索引方便从末尾弹出
- 注意弹出操作的 O(N) 复杂度
- 配合 JSON.ARRLEN 检查数组是否为空
*FAQ
Q1: index 不指定会怎样? A: 默认从末尾弹出(index = -1)。
Q2: 数组为空会怎样? A: 返回 nil。
Q3: 和 JSON.ARRTRIM 有什么区别? A: ARRPOP 删除单个元素并返回;ARRTRIM 按范围裁剪数组。