SPOP

用法
SPOP key [ count ]
复杂度
不带 count 参数时为 O(1),否则为 O(N),其中 N 为传入的 count 值。
1.0.0
ACL 类别
@set, @write, @fast

从存储在 key 处的集合中移除并返回一个或多个随机成员。

此操作类似于 SRANDMEMBER,后者从集合中返回一个或多个随机元素,但不会将其移除。

默认情况下,此命令从集合中弹出一个成员。当提供了可选的 count 参数时,回复将包含最多 count 个成员,具体取决于集合的基数。

示例

127.0.0.1:6379> SADD myset "one"
(integer) 1
127.0.0.1:6379> SADD myset "two"
(integer) 1
127.0.0.1:6379> SADD myset "three"
(integer) 1
127.0.0.1:6379> SPOP myset
"three"
127.0.0.1:6379> SMEMBERS myset
1) "one"
2) "two"
127.0.0.1:6379> SADD myset "four"
(integer) 1
127.0.0.1:6379> SADD myset "five"
(integer) 1
127.0.0.1:6379> SPOP myset 3
1) "one"
2) "four"
3) "five"
127.0.0.1:6379> SMEMBERS myset
1) "two"

返回元素的分布

请注意,当您需要确保返回元素具有均匀分布时,此命令并不适用。有关 SPOP 所用算法的更多信息,请查阅 Knuth 抽样算法和 Floyd 抽样算法。

RESP2 回复

以下之一

RESP3 回复

以下之一

  • Null 回复:如果键不存在。

  • Bulk string 回复:当不带 count 参数调用时,返回被移除的成员。

  • Set 回复:当带 count 参数调用时,返回被移除成员的集合。

历史

版本 变更
3.2.0

添加了 count 参数。