*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 按范围裁剪数组。