ZMPOP

用法
ZMPOP numkeys key [ key ... ] 〈 MIN | MAX 〉 [ COUNT count ]
复杂度
O(K) + O(M*log(N)),其中 K 是提供的键的数量,N 是有序集合中的元素数量,M 是弹出的元素数量。
版本
7.0.0
ACL 类别
@sortedset, @write, @slow

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

ZMPOPBZMPOP 类似于以下功能更受限的命令:

  • ZPOPMINZPOPMAX,它们只接受一个键,但可以返回多个元素。
  • BZPOPMINBZPOPMAX,它们接受多个键,但只从一个键中返回一个元素。

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

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

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

示例

127.0.0.1:6379> ZMPOP 1 notsuchkey MIN
(nil)
127.0.0.1:6379> ZADD myzset 1 "one" 2 "two" 3 "three"
(integer) 3
127.0.0.1:6379> ZMPOP 1 myzset MIN
1) "myzset"
2) 1) 1) "one"
      2) "1"
127.0.0.1:6379> ZRANGE myzset 0 -1 WITHSCORES
1) "two"
2) "2"
3) "three"
4) "3"
127.0.0.1:6379> ZMPOP 1 myzset MAX COUNT 10
1) "myzset"
2) 1) 1) "three"
      2) "3"
   2) 1) "two"
      2) "2"
127.0.0.1:6379> ZADD myzset2 4 "four" 5 "five" 6 "six"
(integer) 3
127.0.0.1:6379> 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"
127.0.0.1:6379> ZRANGE myzset 0 -1 WITHSCORES
(empty array)
127.0.0.1:6379> ZMPOP 2 myzset myzset2 MAX COUNT 10
(nil)
127.0.0.1:6379> ZRANGE myzset2 0 -1 WITHSCORES
(empty array)
127.0.0.1:6379> EXISTS myzset myzset2
(integer) 0

RESP2 回复

以下之一

  • 空回复:当没有元素可以弹出时。

  • 数组回复:一个包含两个元素的数组,第一个元素是被弹出元素的键名,第二个元素是弹出元素的数组。元素数组中的每个条目也是一个包含成员及其分数的数组。

RESP3 回复

以下之一

  • 空值回复:当没有元素可以弹出时。

  • 数组回复:一个包含两个元素的数组,第一个元素是被弹出元素的键名,第二个元素是弹出元素的数组。元素数组中的每个条目也是一个包含成员及其分数的数组。