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

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

count参数将在更高版本中提供,但是在2.6、2.8、3.0中不可用。

返回值

bulk-string-reply:被删除的元素,或者当key不存在时返回nil

例子

SADD myset "one"
SADD myset "two"
SADD myset "three"
SPOP myset
SMEMBERS myset
SADD myset "four"
SADD myset "five"
SPOP myset 3
SMEMBERS myset

传递count时的行为规范

如果count大于集合内部的元素数量,此命令将会返回整个集合,不会有额外的元素。

返回元素的分布

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

count参数扩展

Redis 3.2是第一个可以给SPOP传递可选参数count的版本,以便在一次调用中取回多个元素。此实现已经在unstable分支中可用。

关于本文翻译者

网名:eson
github:helloeson
打赏他(备注rediscn)
微信