*Redis ARGETRANGE 命令

ARGETRANGE 返回数组中指定索引范围内的子数组。


*语法

ARGETRANGE key start stop

*参数说明

参数 类型 必填 说明
key String 数组键名
start Integer 起始索引(含,0-based),支持负数
stop Integer 结束索引(含),支持负数

*返回值

  • Array:指定范围内的元素列表
  • Empty array:范围为空或 start 大于 stop
  • Nil:key 不存在
  • Error:key 存储的不是 Array 类型

*时间复杂度

O(N),N 为返回的元素数量(需要从 start 位置开始遍历)。


*示例

*获取前三个元素

> ARSET letters "a" "b" "c" "d" "e" "f"
OK
> ARGETRANGE letters 0 2
1) "a"
2) "b"
3) "c"

*获取末尾元素

> ARGETRANGE letters -3 -1
1) "d"
2) "e"
3) "f"

*分页获取

> ARGETRANGE letters 3 5
1) "d"
2) "e"
3) "f"

*常见错误

错误 原因 解决
WRONGTYPE key 不是 Array 类型 确认 key 的数据类型
ERR value is not an integer start/stop 非整数 传入整数索引

*最佳实践

  • 大数组分页读取的首选方式
  • 负数索引简化末尾元素获取
  • 配合 ARLEN 计算分页参数,避免越界

*FAQ

Q1: start 和 stop 都支持负数吗? A: 是的,-1 表示最后一个元素,支持混合使用正负数。

Q2: start 大于 stop 会怎样? A: 返回空数组,不报错。

Q3: 范围超出数组边界怎么办? A: 自动截断到有效范围,不会报错。例如 stop 大于最大索引时只返回到末尾。