- 用法
-
ZRANDMEMBER key [ count [ WITHSCORES ] ]
- 复杂度
- O(N),其中 N 为返回成员的数量
- 起始版本
- 6.2.0
- ACL 类别
- @sortedset, @read, @slow
- 不返回重复元素。
- 如果
count
大于有序集合的基数,命令将只返回整个有序集合,而不返回额外元素。 - 回复中元素的顺序并非完全随机,因此如果需要,由客户端自行打乱。
- 可能出现重复元素。
- 总是返回精确的
count
个元素,如果有序集合为空(键不存在),则返回一个空数组。 - 回复中元素的顺序是完全随机的。
当仅使用 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
为负值时,行为改变如下
RESP2 回复
批量字符串回复:在没有额外 count 参数的情况下,命令返回一个随机选择的成员,或者当 key 不存在时返回 Nil 回复。
数组回复:当传递额外的 count 参数时,命令返回一个成员数组,或者当 key 不存在时返回一个空数组。如果使用了 WITHSCORES 修饰符,回复将是来自有序集合的成员及其分数的列表。
RESP3 回复
批量字符串回复:在没有额外 count 参数的情况下,命令返回一个随机选择的成员,或者当 key 不存在时返回 Null 回复。
数组回复:当传递额外的 count 参数时,命令返回一个成员数组,或者当 key 不存在时返回一个空数组。如果使用了 WITHSCORES 修饰符,回复将是来自有序集合的成员及其分数的列表。