LINSERT:将元素插入到列表

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

  1. LINSERT list BEFORE|AFTER target_element new_element

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

比如说,对于以下这个 lst 列表:

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

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

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

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

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

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


图 4-21 LINSERT 命令的执行过程_images/IMAGE_LINSERT_1.jpeg_images/IMAGE_LINSERT_2.jpeg

处理不存在的元素

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

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

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

其他信息

属性
复杂度O(N) ,其中 N 为给定列表的长度。
版本要求LINSERT 命令从 Redis 2.2.0 版本开始可用。