LINSERT:将元素插入列表

通过使用 LINSERT 命令,用户可以将一个新元素插入列表某个指定元素的前面或者后面:

LINSERT list BEFORE|AFTER target_element new_element

LINSERT 命令第二个参数的值可以是 BEFORE 或者 AFTER,它们分别用于指示命令将新元素插入目标元素的前面或者后面。命令在完成插入操作之后会返回列表当前的长度。

例如,对于 lst 列表:

redis> LRANGE lst 0 -1
1) "a"
2) "b"
3) "c"

我们可以通过执行以下 LINSERT 命令,将元素 "10086" 插入元素 "b" 的前面:

redis> LINSERT lst BEFORE "b" "10086"
(integer) 4
redis> LRANGE lst 0 -1
1) "a"
2) "10086"
3) "b"
4) "c"

还可以通过执行以下 LINSERT 命令,将元素 "12345" 插入元素 "c" 的后面:

redis> LINSERT lst AFTER "c" "12345"
(integer) 5
redis> LRANGE lst 0 -1
1) "a"
2) "10086"
3) "b"
4) "c"
5) "12345"

图4-21展示了上述两个 LINSERT 命令的执行过程。

image 2025 01 03 16 50 42 440
Figure 1. 图4-21 LINSERT命令的执行过程

处理不存在的元素

为了执行插入操作,LINSERT 命令要求用户给定的目标元素必须已经存在于列表当中。相反,如果用户给定的目标元素并不存在,那么 LINSERT 命令将返回 -1 表示插入失败:

redis> LINSERT lst BEFORE "not-exists-element" "new element"
(integer) -1

在插入操作执行失败的情况下,列表包含的元素将不会发生任何变化。

其它信息

  • 复杂度:O(N),其中 N 为给定列表的长度。

  • 版本要求:LINSERT 命令从 Redis 2.2.0 版本开始可用。