*Redis ARDELRANGE 命令

ARDELRANGE 删除数组中指定索引范围内的元素。


*语法

ARDELRANGE key start stop

*参数说明

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

*返回值

  • Integer:删除的元素数量
  • 0:范围为空或 start 大于 stop
  • Error:key 存储的不是 Array 类型

*时间复杂度

O(N),N 为数组长度(需要移动 stop 之后的元素)。


*示例

*删除前两个元素

> ARSET letters "a" "b" "c" "d" "e"
OK
> ARDELRANGE letters 0 1
(integer) 2
> ARGET letters
1) "c"
2) "d"
3) "e"

*使用负数索引删除末尾元素

> ARSET nums "10" "20" "30" "40" "50"
OK
> ARDELRANGE nums -2 -1
(integer) 2
> ARGET nums
1) "10"
2) "20"
3) "30"

*删除单个元素

> ARSET arr "x" "y" "z"
OK
> ARDELRANGE arr 1 1
(integer) 1
> ARGET arr
1) "x"
2) "z"

*常见错误

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

*最佳实践

  • 负数索引方便删除末尾元素,无需先查长度
  • 大范围删除可能阻塞,考虑分批操作
  • 删除后若数组为空,key 自动被删除

*FAQ

Q1: 负数索引如何计算? A: -1 表示最后一个元素,-2 表示倒数第二个,以此类推。

Q2: start 大于数组长度会怎样? A: 不报错,返回 0,不做任何删除。

Q3: stop 超出数组长度怎么办? A: 自动截断到数组末尾,不会报错。