SPOP key [count]

Redis SPOP 命令用于从集合 key中删除并返回一个或多个随机元素。

这个命令和 SRANDMEMBER 相似, SRANDMEMBER 只返回随机成员但是不删除这些返回的成员。

参数 count 从 Redis 3.2 起可用。

*返回值

多行字符串: 被删除的元素,当key不存在时返回nil

*例子

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) "four"
2) "five"
3) "one"
redis>  SMEMBERS myset
1) "three"
redis> 

*SPOP 使用 count 参数的约定

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

*返回元素的分布

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

*Count 参数扩展

Redis 3.2 起可以给 SPOP传递可选参数 count ,以便在一次调用中返回多个元素。