ZRANDMEMBER
从有序集合中返回一个或多个随机成员。
语法
ZRANDMEMBER key [count [WITHSCORES]]
引入版本:6.2.0
复杂度摘要:O(N)
当仅使用 key 参数调用时,从存储在 key 的已排序设置值中返回一个随机元素。
如果提供的 count 参数为正,则返回不同元素的数组。数组的长度是 count 或有序集合的基数 (ZCARD),以较小者为准。
如果使用负 count 进行调用,则行为会发生变化,并且允许命令多次返回相同的元素。在这种情况下,返回的元素数量是指定count的绝对值。
可选的 WITHSCORES 修饰符更改回复,使其包含从有序集合中随机选择的元素的相应分数。
必需参数
key
保存有序集合的键的名称。
可选参数
count
返回的会员数量。正的 count 返回最多多个不同的成员;负 count 会准确返回 |count| 成员,并且可能会重复它们。
WITHSCORES
同时返回每个返回成员的分数。只能与 count 一起使用。
示例
redis> ZADD dadi 1 uno 2 due 3 tre 4 quattro 5 cinque 6 sei
(integer) 6
redis> ZRANDMEMBER dadi
redis> ZRANDMEMBER dadi
redis> ZRANDMEMBER dadi -5 WITHSCORES
详细说明
计数通过时的行为规范
当 count 参数为正值时,该命令的行为如下:
- 不返回重复元素。
- 如果
count大于有序集合的基数,则该命令将仅返回整个有序集合,而不返回其他元素。 - 回复中元素的顺序并不是真正随机的,因此客户端可以根据需要对它们进行打乱顺序。
当 count 为负值时,行为发生如下变化:
- 重复元素是可能的。
- 始终返回
count元素,或者如果有序集合为空(不存在的键)则返回空数组。 - 回复中元素的顺序确实是随机的。
Redis Software 与 Redis Cloud 兼容性
| Redis 软件 |
Redis Cloud |
说明 |
|---|---|---|
| ✅ 标准 |
✅ 标准 |
返回值
RESP2
批量字符串回复:如果没有附加的 计数 参数,该命令将返回随机选择的成员,或者当 关键 不存在时返回 无回复。 数组回复:当传递附加的 计数 参数时,该命令返回一个成员数组,或者当 关键 不存在时返回一个空数组。如果使用 WITHSCORES 修饰符,则回复是成员列表及其来自有序集合的分数。
RESP3
批量字符串回复:如果没有附加的 计数 参数,该命令将返回随机选择的成员,或者当 关键 不存在时返回 空回复。 数组回复:当传递附加的 计数 参数时,该命令返回一个成员数组,或者当 关键 不存在时返回一个空数组。如果使用 WITHSCORES 修饰符,则回复是成员列表及其来自有序集合的分数。
资料来源:Redis 官方 ZRANDMEMBER 文档;中文内容参考 Redis 文档许可。