# 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参数。

# 反馈

如果您在此页面上发现问题,或有改进建议,请提交请求以合并或打开存储库中的问题。

Last Updated: 4/18/2023, 8:45:33 AM