Redis SPOP 命令用于从集合 key
中删除并返回一个或多个随机元素。
这个命令和 SRANDMEMBER 相似, SRANDMEMBER 只返回随机成员但是不删除这些返回的成员。
参数 count
从 Redis 3.2 起可用。
*返回值
多行字符串: 被删除的元素,当key
不存在时返回nil
。
*例子
redis>
SADD myset "one"
(integer) 1redis> SADD myset "two"
(integer) 1redis> SADD myset "three"
(integer) 1redis> SPOP myset
"one"redis> SMEMBERS myset
1) "two" 2) "three"redis> SADD myset "four"
(integer) 1redis> SADD myset "five"
(integer) 1redis> SPOP myset 3
1) "three" 2) "four" 3) "two"redis> SMEMBERS myset
1) "five"
*SPOP 使用 count 参数的约定
如果count大于集合内部的元素总数,此命令将会返回整个集合,没有额外的元素。
*返回元素的分布
请注意,当你需要保证均匀分布返回的元素时,此命令不适用。更多有关SPOP使用的算法的信息,请查阅Knuth采样和Floyd采样算法。
*Count 参数扩展
Redis 3.2 起可以给 SPOP
传递可选参数 count
,以便在一次调用中返回多个元素。