*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"

*常见错误

  1. pivot 不存在返回 -1:不是错误,但业务层需处理。

*最佳实践

  1. 有序队列插入:需要在特定位置插入时使用,如消息队列中插入优先级消息。
  2. 注意性能O(N) 复杂度,大 List 慎用。

*FAQ

Q: pivot 有多个匹配怎么办? A: 只会在第一个匹配的 pivot 位置插入。

Q: LINSERT 可以在空 List 上用吗? A: key 不存在返回 0,不创建 key。