LMPOP

从列表中删除多个元素后返回它们。如果弹出最后一个元素,则删除列表。

语法

LMPOP numkeys key [key ...] [COUNT count]

引入版本:7.0.0

复杂度摘要:O(N+M)

[!NOTE] 此命令的行为在集群 Redis 环境中有所不同。请参阅 多键操作 页面了解更多信息。

从提供的键名称列表中的第一个非空列表键中弹出一个或多个元素。

LMPOP 和 BLMPOP 类似于以下更有限的命令:

  • LPOP 或 RPOP 只需要一个键,并且可以返回多个元素。
  • BLPOP 或 BRPOP 接受多个键,但仅从一个键返回一个元素。

请参阅 BLMPOP 了解此命令的阻塞变体。

根据传递的参数从第一个非空列表的左侧或右侧弹出元素。返回元素的数量限制为非空列表的长度和 count 参数(默认为 1)之间的较小者。

必需参数

numkeys

后面的键的数量。

key [key ...]

列表中的一个或多个按键进行操作。

LEFT | RIGHT

要从中弹出元素的列表末尾:LEFT(头)或RIGHT(尾)。

可选参数

COUNT count

要弹出的元素数量。默认为 1。

示例

redis> LMPOP 2 non1 non2 LEFT COUNT 10
(nil)
redis> LPUSH mylist "one" "two" "three" "four" "five"
(integer) 5
redis> LMPOP 1 mylist LEFT
1) "mylist"
2) 1) "five"
redis> LRANGE mylist 0 -1
1) "four"
2) "three"
3) "two"
4) "one"
redis> LMPOP 1 mylist RIGHT COUNT 10
1) "mylist"
2) 1) "one"
   2) "two"
   3) "three"
   4) "four"
redis> LPUSH mylist "one" "two" "three" "four" "five"
(integer) 5
redis> LPUSH mylist2 "a" "b" "c" "d" "e"
(integer) 5
redis> LMPOP 2 mylist mylist2 right count 3
1) "mylist"
2) 1) "one"
   2) "two"
   3) "three"
redis> LRANGE mylist 0 -1
1) "five"
2) "four"
redis> LMPOP 2 mylist mylist2 right count 5
1) "mylist"
2) 1) "four"
   2) "five"
redis> LMPOP 2 mylist mylist2 right count 10
1) "mylist2"
2) 1) "a"
   2) "b"
   3) "c"
   4) "d"
   5) "e"
redis> EXISTS mylist mylist2
(integer) 0

Redis Software 与 Redis Cloud 兼容性

Redis
软件
Redis
Cloud
说明
✅ 标准
✅ 主动-主动
✅ 标准
✅ 主动-主动

返回值

RESP2

以下之一: * 无回复:如果无法弹出元素。 * 数组回复:一个双元素数组,第一个元素是从中弹出元素的键的名称,第二个元素是元素数组。

RESP3

以下之一: * 空回复:如果无法弹出元素。 * 数组回复:一个双元素数组,第一个元素是从中弹出元素的键的名称,第二个元素是元素数组。

资料来源:Redis 官方 LMPOP 文档;中文内容参考 Redis 文档许可。