- 用法
-
SRANDMEMBER key [ count ]
- 复杂度
- 不带 count 参数时为 O(1),否则为 O(N),其中 N 是所传递 count 的绝对值。
- 始于
- 1.0.0
- ACL 类别
- @set, @read, @slow
- 不返回重复元素。
- 如果
count
大于集合的基数,命令将只返回整个集合,而不返回额外元素。 - 回复中元素的顺序并非完全随机,因此如果需要,由客户端自行打乱。
- 可能返回重复元素。
- 总是返回精确的
count
个元素,如果集合为空(键不存在),则返回空数组。 - 回复中元素的顺序是完全随机的。
-
批量字符串回复:不带额外 count 参数时,命令返回一个随机选择的成员,或者当 key 不存在时返回一个 Nil 回复。
-
数组回复:当传递可选的 count 参数时,命令返回一个成员数组,或者当 key 不存在时返回一个空数组。
-
批量字符串回复:不带额外 count 参数时,命令返回一个随机选择的成员,或者当 key 不存在时返回一个 Null 回复。
-
数组回复:当传递可选的 count 参数时,命令返回一个成员数组,或者当 key 不存在时返回一个空数组。
当仅使用 key
参数调用时,从存储在 key
的集合值中返回一个随机元素。
如果提供的 count
参数为正,则返回一个包含不同元素的数组。数组的长度为 count
或集合的基数 (SCARD
),取两者中较小的一个。
如果使用负数 count
调用,行为会改变,命令允许返回相同元素多次。在这种情况下,返回元素的数量是指定 count
的绝对值。
示例
127.0.0.1:6379> SADD myset one two three
(integer) 3
127.0.0.1:6379> SRANDMEMBER myset
"three"
127.0.0.1:6379> SRANDMEMBER myset 2
1) "one"
2) "three"
127.0.0.1:6379> SRANDMEMBER myset -5
1) "two"
2) "one"
3) "one"
4) "one"
5) "two"
传递 count 参数时的行为规范
当 count
参数为正值时,此命令的行为如下
当 count
为负值时,行为变化如下
RESP2 回复
以下之一
RESP3 回复
以下之一
历史
版本 | 变更 |
---|---|
2.6.0 | 增加了可选的 |