RPUSH:将元素推入到列表右端

RPUSH 命令和 LPUSH 命令类似,这两个命令执行的都是元素推入操作,它们之间唯一的区别就在于 LPUSH 命令会将元素推入列表左端,而 RPUSH 命令则会将元素推入列表右端:

  1. RPUSH list item [item item ...]

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

举个例子,以下代码展示了如何通过 RPUSH 命令,将 "buy some milk""watch tv""finish homework" 等元素依次推入到 todo 列表的右端:

  1. redis> RPUSH todo "buy some milk"
  2. (integer) 1 -- 列表现在包含一个元素
  3.  
  4. redis> RPUSH todo "watch tv"
  5. (integer) 2 -- 列表现在包含两个元素
  6.  
  7. redis> RPUSH todo "finish homework"
  8. (integer) 3 -- 列表现在包含三个元素

图 4-6 展示了以上三个 RPUSH 命令的执行过程:

  • 首先,在操作执行之前, todo 列表为空,也即是不存在于数据库中;

  • 执行第一个 RPUSH 命令,将元素 "buy some milk" 推入到列表右端;

  • 执行完第一个 RPUSH 命令的列表现在包含一个元素;

  • 执行第二个 RPUSH 命令,将元素 "watch tv" 推入到列表右端;

  • 执行完第二个 RPUSH 命令的列表现在包含两个元素;

  • 执行第三个 RPUSH 命令,将元素 "finish homework" 推入到列表右端;

  • 执行完第三个 RPUSH 命令的 todo 列表现在包含三个元素。


图 4-6 RPUSH 命令执行过程_images/IMAGE_RPUSH_EXAMPLE.jpeg


一次推入多个元素

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

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

  1. redis> RPUSH another-todo "buy some milk" "watch tv" "finish homework"
  2. (integer) 3

那么 RPUSH 命令将按照图 4-7 展示的顺序,将三个给定元素依次推入到 another-todo 列表的右端。


图 4-7 一次推入多个元素_images/IMAGE_MULTI_RPUSH.jpeg


最终,这条 RPUSH 命令将产生图 4-8 所示的列表,这个列表和上一小节使用三条 RPUSH 命令构建出的列表完全相同。


图 4-8 another-todo 列表及其包含的元素_images/IMAGE_TODO_AGAIN.jpeg


其他信息

属性
复杂度O(N),其中 N 为被推入到列表的元素数量。
版本要求RPUSH 命令从 Redis 1.0.0 版本开始可用,但是只有 Redis 2.4.0 或以上版本的 RPUSH 命令可以一次推入多个元素,Redis 2.4.0 以下版本的 RPUSH 命令每次只能推入一个元素。