ZRANDMEMBER

用法
ZRANDMEMBER key [ count [ WITHSCORES ] ]
复杂度
O(N),其中 N 为返回成员的数量
起始版本
6.2.0
ACL 类别
@sortedset, @read, @slow

当仅使用 key 参数调用时,从存储在 key 处的有序集合中返回一个随机元素。

如果提供的 count 参数为正数,则返回一个包含不同元素的数组。数组的长度为 count 或有序集合的基数(ZCARD),取两者中的较小值。

如果使用负数 count 调用,行为会改变,命令允许返回同一个元素多次。在这种情况下,返回元素的数量是指定 count 的绝对值。

可选的 WITHSCORES 修饰符会改变回复,使其包含从有序集合中随机选择的元素的相应分数。

示例

127.0.0.1:6379> ZADD dadi 1 uno 2 due 3 tre 4 quattro 5 cinque 6 sei
(integer) 6
127.0.0.1:6379> ZRANDMEMBER dadi
"uno"
127.0.0.1:6379> ZRANDMEMBER dadi
"uno"
127.0.0.1:6379> ZRANDMEMBER dadi -5 WITHSCORES
 1) "cinque"
 2) "5"
 3) "sei"
 4) "6"
 5) "quattro"
 6) "4"
 7) "quattro"
 8) "4"
 9) "sei"
10) "6"

传递 count 参数时的行为规范

count 参数为正值时,此命令的行为如下

  • 不返回重复元素。
  • 如果 count 大于有序集合的基数,命令将只返回整个有序集合,而不返回额外元素。
  • 回复中元素的顺序并非完全随机,因此如果需要,由客户端自行打乱。

count 为负值时,行为改变如下

  • 可能出现重复元素。
  • 总是返回精确的 count 个元素,如果有序集合为空(键不存在),则返回一个空数组。
  • 回复中元素的顺序是完全随机的。

RESP2 回复

批量字符串回复:在没有额外 count 参数的情况下,命令返回一个随机选择的成员,或者当 key 不存在时返回 Nil 回复

数组回复:当传递额外的 count 参数时,命令返回一个成员数组,或者当 key 不存在时返回一个空数组。如果使用了 WITHSCORES 修饰符,回复将是来自有序集合的成员及其分数的列表。

RESP3 回复

批量字符串回复:在没有额外 count 参数的情况下,命令返回一个随机选择的成员,或者当 key 不存在时返回 Null 回复

数组回复:当传递额外的 count 参数时,命令返回一个成员数组,或者当 key 不存在时返回一个空数组。如果使用了 WITHSCORES 修饰符,回复将是来自有序集合的成员及其分数的列表。