*Redis AROP 命令

AROP 对数组执行原子性操作(弹出/压入末尾元素)。


*语法

AROP key LEFT|RIGHT [PUSH element [element ...]] | [POP [COUNT count]]

*参数说明

参数 类型 必填 说明
key String 数组键名
LEFT / RIGHT Flag 操作方向(左端/右端/头部/尾部)
PUSH element String / Bytes 条件 压入元素,可多个
POP Flag 条件 弹出元素
COUNT count Integer POP 时指定弹出数量,默认 1

*返回值

  • Integer:PUSH 时返回数组新长度
  • String / Array:POP 时返回弹出的元素(多个时为数组)
  • Nil:POP 时数组为空或 key 不存在
  • Error:key 存储的不是 Array 类型

*时间复杂度

O(1) 单个元素;O(N) POP COUNT N 个元素。


*示例

*右端压入

> AROP myarr RIGHT PUSH "a" "b"
(integer) 2
> ARGET myarr
1) "a"
2) "b"

*右端弹出

> AROP myarr RIGHT POP
"b"
> ARGET myarr
1) "a"

*左端批量弹出

> ARSET nums "1" "2" "3" "4" "5"
OK
> AROP nums LEFT POP COUNT 2
1) "1"
2) "2"

*常见错误

错误 原因 解决
WRONGTYPE key 不是 Array 类型 确认 key 的数据类型
ERR syntax error 同时指定 PUSH 和 POP 二选一

*最佳实践

  • 作为栈使用:RIGHT PUSH + RIGHT POP
  • 作为队列使用:LEFT POP + RIGHT PUSH
  • 批量 POP 比多次单元素 POP 更高效

*FAQ

Q1: AROP 和 List 的 LPUSH/RPOP 有什么区别? A: AROP 是 Array 类型的统一操作接口,功能等效但数据结构不同。

Q2: 可以同时 PUSH 和 POP 吗? A: 不可以,单次调用只能执行 PUSH 或 POP 之一。

Q3: POP COUNT 超出数组长度怎么办? A: 返回全部元素,数组变为空。