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 文档许可。