*Redis ARRING 命令

ARRING 将数组当作环形缓冲区(ring buffer)访问,支持循环索引。


*语法

ARRING key index [COUNT count]

*参数说明

参数 类型 必填 说明
key String 数组键名
index Integer 索引(支持任意整数,循环取模)
COUNT count Integer 返回元素数量,默认 1

*返回值

  • String:count=1 时返回单个元素
  • Array:count>1 时返回元素列表
  • Nil:key 不存在
  • Error:key 存储的不是 Array 类型;数组为空

*时间复杂度

O(count)

*

*示例

*循环索引访问

> ARSET colors "red" "green" "blue"
OK
> ARRING colors 0
"red"
> ARRING colors 3
"red"
> ARRING colors -1
"blue"

*批量循环读取

> ARRING colors 1 COUNT 3
1) "green"
2) "blue"
3) "red"

*环形遍历

> ARRING colors 5
"blue"

*常见错误

错误 原因 解决
WRONGTYPE key 不是 Array 类型 确认 key 的数据类型
ERR empty array 数组为空 先向数组添加元素

*最佳实践

  • 实现循环队列、轮询调度器的理想选择
  • 负数索引同样循环解析(-1 等价于长度-1)
  • 配合计数器实现无边界顺序遍历

*FAQ

Q1: ARRING 和 ARGETRANGE 有什么区别? A: ARRING 索引越界时会循环回绕;ARGETRANGE 越界后截断或返回空。

Q2: count 大于数组长度怎么办? A: 循环重复返回,直到凑够 count 个元素。

Q3: 数组为空时会怎样? A: 返回错误,无法对空数组做环形访问。