# 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 →