SPOP

删除一组成员后,返回一个或多个随机成员。如果最后一个成员被弹出,则删除集合。

语法

SPOP key [count]

引入版本:1.0.0

复杂度摘要:O(1)

从 key 处的设置值存储中删除并返回一个或多个随机成员。

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

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

必需参数

key

保存该集合的键的名称。

可选参数

count

要弹出的成员数量。如果没有它,单个成员就会被弹出。

示例

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

详细说明

返回元素分布

请注意,当您需要保证返回元素的均匀分布时,此命令不适合。有关 SPOP 使用的算法的更多信息,请查找 Knuth 采样和 Floyd 采样算法。

Redis Software 与 Redis Cloud 兼容性

Redis
软件
Redis
Cloud
说明
✅ 标准
✅ 主动-主动
✅ 标准
✅ 主动-主动

返回值

RESP2

以下之一: * 无回复:如果键不存在。 * 批量字符串回复:在不带 计数 参数的情况下调用时,删除的成员。 * 数组回复:当使用 计数 参数调用时,已删除成员的列表。

RESP3

以下之一: * 空回复:如果键不存在。 * 批量字符串回复:在不带 计数 参数的情况下调用时,删除的成员。 * 数组回复:当使用 计数 参数调用时,已删除成员的列表。

资料来源:Redis 官方 SPOP 文档;中文内容参考 Redis 文档许可。