*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 删除单个索引位置。