# Spop
移除并返回集合中的一个随机元素
语法
SPOP key [count]
可用版本:
1.0.0
时间复杂度:
没有计数参数 O(1),否则为 O(N),其中 N 是传递计数的值。
ACL 类别:
@write
,@set
,@fast
从位于key
处的设置值存储中删除并返回一个或多个随机成员。
此操作类似于SRANDMEMBER
,从集合中返回一个或多个随机元素但不删除它。
默认情况下,该命令会从集合中弹出一个成员。当提供可选count
参数时,回复将由最多count
成员组成,具体取决于集合的基数。
# 返回
不带count
参数调用时:
批量字符串回复:被移除的成员,或者nil
何时key
不存在。
当使用count
参数调用时:
数组回复key
:被移除的成员,或者当不存在时为空数组。
# 例子
redis> SADD myset "one"
(integer) 1
redis> SADD myset "two"
(integer) 1
redis> SADD myset "three"
(integer) 1
redis> SPOP myset
"two"
redis> SMEMBERS myset
1) "three"
2) "one"
redis> SADD myset "four"
(integer) 1
redis> SADD myset "five"
(integer) 1
redis> SPOP myset 3
1) "three"
2) "one"
3) "four"
redis> SMEMBERS myset
1) "five"
redis>
# 返回元素的分布
请注意,当您需要保证返回元素的均匀分布时,此命令不适合。有关用于 的算法的更多信息SPOP
,请查看 Knuth 采样和 Floyd 采样算法。
# 历史
- 从 Redis 版本 3.2.0 开始:添加了
count
参数。
# 反馈
如果您在此页面上发现问题,或有改进建议,请提交请求以合并或打开存储库中的问题。
← Sunionstore SET →