*Redis LINSERT 命令
在 List 中指定元素前或后插入新元素。
*语法
LINSERT key BEFORE | AFTER pivot element
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | List 的键名 |
| BEFORE/AFTER | 标志 | 是 | 在 pivot 前或后插入 |
| pivot | String | 是 | 参照元素 |
| element | String | 是 | 要插入的新元素 |
*返回值
| 条件 | 返回值 |
|---|---|
| 插入成功 | 返回 List 新长度(Integer) |
| pivot 不存在 | -1 |
| key 不存在 | 0 |
*时间复杂度
O(N),N 为 List 长度,需要遍历查找 pivot。
*示例
> RPUSH mylist a b c
(integer) 3
> LINSERT mylist BEFORE b x
(integer) 4
> LRANGE mylist 0 -1
1) "a"
2) "x"
3) "b"
4) "c"
> LINSERT mylist AFTER b y
(integer) 5
> LRANGE mylist 0 -1
1) "a"
2) "x"
3) "b"
4) "y"
5) "c"
*常见错误
- pivot 不存在返回 -1:不是错误,但业务层需处理。
*最佳实践
- 有序队列插入:需要在特定位置插入时使用,如消息队列中插入优先级消息。
- 注意性能:O(N) 复杂度,大 List 慎用。
*FAQ
Q: pivot 有多个匹配怎么办? A: 只会在第一个匹配的 pivot 位置插入。
Q: LINSERT 可以在空 List 上用吗? A: key 不存在返回 0,不创建 key。