ZMPOP

在删除一个或多个有序集合中后,返回得分最高或最低的成员。如果最后一个成员被弹出,则删除有序集合。

语法

ZMPOP numkeys key [key ...] [COUNT count]

引入版本:7.0.0

复杂度摘要:O(K)

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

从提供的键名称列表中的第一个非空有序集合中弹出一个或多个元素,即成员分数对。

ZMPOP 和 BZMPOP 类似于以下更有限的命令:

  • ZPOPMIN 或 ZPOPMAX 只需要一个键,并且可以返回多个元素。
  • BZPOPMIN 或 BZPOPMAX 接受多个键,但仅从一个键返回一个元素。

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

当使用 MIN 修饰符时,弹出的元素是第一个非空有序集合中分数最低的元素。 MAX 修饰符会导致得分最高的元素被弹出。可选的 COUNT 可用于指定要弹出的元素数量,默认设置为 1。

弹出元素的数量是有序集合的基数和 COUNT 的值中的最小值。

必需参数

numkeys

后面的键的数量。

key [key ...]

要从中弹出的一个或多个有序集合键。

MIN | MAX

弹出分数最低(MIN)或最高分数(MAX)的成员。

可选参数

COUNT count

要弹出的成员数量。默认为 1。

示例

redis> ZMPOP 1 notsuchkey MIN
(nil)
redis> ZADD myzset 1 "one" 2 "two" 3 "three"
(integer) 3
redis> ZMPOP 1 myzset MIN
1) "myzset"
2) 1) 1) "one"
      2) "1"
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "two"
2) "2"
3) "three"
4) "3"
redis> ZMPOP 1 myzset MAX COUNT 10
1) "myzset"
2) 1) 1) "three"
      2) "3"
   2) 1) "two"
      2) "2"
redis> ZADD myzset2 4 "four" 5 "five" 6 "six"
(integer) 3
redis> ZMPOP 2 myzset myzset2 MIN COUNT 10
1) "myzset2"
2) 1) 1) "four"
      2) "4"
   2) 1) "five"
      2) "5"
   3) 1) "six"
      2) "6"
redis> ZRANGE myzset 0 -1 WITHSCORES
(empty array)
redis> ZMPOP 2 myzset myzset2 MAX COUNT 10
(nil)
redis> ZRANGE myzset2 0 -1 WITHSCORES
(empty array)
redis> EXISTS myzset myzset2
(integer) 0

Redis Software 与 Redis Cloud 兼容性

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

返回值

RESP2

以下之一: * 无回复:当无法弹出元素时。 * 数组回复:一个双元素数组,第一个元素是弹出元素的键的名称,第二个元素是弹出元素的数组。 elements 数组中的每个条目也是一个包含成员及其分数的数组。

RESP3

以下之一: * 空回复:当无法弹出元素时。 * 数组回复:一个双元素数组,第一个元素是弹出元素的键的名称,第二个元素是弹出元素的数组。 elements 数组中的每个条目也是一个包含成员及其分数的数组。

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