LPUSH:将元素推入列表左端

用户可以通过 LPUSH 命令,将一个或多个元素推入给定列表的左端:

LPUSH list item [item item ...]

在推入操作执行完毕之后,LPUSH 命令会返回列表当前包含的元素数量作为返回值。

例如,以下代码就展示了如何通过 LPUSH 命令将 "buy some milk"、"watch tv"、"finish homework" 等元素依次推入 todo 列表的左端:

redis> LPUSH todo "buy some milk"
(integer) 1 -- 列表现在包含1个元素
redis> LPUSH todo "watch tv"
(integer) 2 -- 列表现在包含2个元素
redis> LPUSH todo "finish homework"
(integer) 3 -- 列表现在包含3个元素

图 4-3 展示了以上 3 个 LPUSH 命令的执行过程:

  1. 在执行操作之前,todo 列表为空,即不存在于数据库中。

  2. 执行第 1 个 LPUSH 命令,将元素 "buy some milk" 推入列表左端。

  3. 执行完第 1 个 LPUSH 命令的列表现在包含一个元素。

  4. 执行第 2 个 LPUSH 命令,将元素 "watch tv" 推入列表左端。

  5. 执行完第 2 个 LPUSH 命令的列表现在包含两个元素。

  6. 执行第 3 个 LPUSH 命令,将元素 "finish homework" 推入列表左端。

  7. 执行完第 3 个 LPUSH 命令的 todo 列表现在包含 3 个元素。

一次推入多个元素

LPUSH 命令允许用户一次将多个元素推入列表左端:如果用户在执行 LPUSH 命令时给定了多个元素,那么 LPUSH 命令将按照元素给定的顺序,从左到右依次将所有给定元素推入列表左端。

image 2025 01 03 15 13 06 473
Figure 1. 图4-3 LPUSH命令执行过程

举个例子,如果用户执行以下命令:

redis> LPUSH another-todo "buy some milk" "watch tv" "finish homework"
(integer) 3

那么 LPUSH 命令将按照图 4-4 所示的顺序,将 3 个给定元素依次推入 another-todo 列表的左端。

image 2025 01 03 15 15 01 888
Figure 2. 图4-4 一次推入多个元素

最终,这条 LPUSH 命令将产生图 4-5 所示的列表,这个列表与前面使用 3 条 LPUSH 命令构建出的列表完全相同。

image 2025 01 03 15 15 38 005
Figure 3. 图4-5 another-todo 列表及其包含的元素

其它信息

  • 复杂度:O(N),其中 N 为被推入列表的元素数量。

  • 版本要求:LPUSH 命令从 Redis 1.0.0 版本开始可用,但是只有 Redis 2.4.0 或以上版本的 LPUSH 命令可以一次推入多个元素,Redis 2.4.0 以下版本的 LPUSH 命令每次只能推入一个元素。