*Redis ARDEL 命令

ARDEL 从数组中删除一个或多个指定元素。


*语法

ARDEL key element [element ...]

*参数说明

参数 类型 必填 说明
key String 数组键名
element String / Bytes 要删除的元素值,支持多个

*返回值

  • Integer:实际删除的元素数量
  • 0:数组中不存在指定元素或 key 不存在
  • Error:key 存储的不是 Array 类型

*时间复杂度

O(N·M),N 为数组长度,M 为待删除元素个数。


*示例

*删除单个元素

> ARSET colors "red" "green" "blue" "yellow"
OK
> ARDEL colors "green"
(integer) 1
> ARGET colors
1) "red"
2) "blue"
3) "yellow"

*删除多个元素

> ARSET nums "1" "2" "3" "2" "4"
OK
> ARDEL nums "2" "4"
(integer) 3
> ARGET nums
1) "1"
2) "3"

*删除不存在的元素

> ARDEL colors "purple"
(integer) 0

*常见错误

错误 原因 解决
WRONGTYPE key 不是 Array 类型 确认 key 的数据类型
ERR wrong number of arguments 未提供 element 至少提供一个 element

*最佳实践

  • 大数组删除操作建议分批进行,避免长时间阻塞
  • 按索引删除请使用 ARDELRANGE
  • 如需删除所有匹配元素,确保理解 ARDEL 会删除所有相等的值

*FAQ

Q1: ARDEL 会删除所有匹配的相等元素吗? A: 是的,数组中所有等于指定 element 的值都会被删除。

Q2: 删除后数组索引会变化吗? A: 会,删除后后续元素会前移填补空缺。

Q3: 如何按索引删除而非按值删除? A: 使用 ARDELRANGE key index index 删除单个索引位置。