SPOP key [count]

Removes and returns one or more random elements from the set value store at key.

This operation is similar to SRANDMEMBER, that returns one or more random elements from a set but does not remove it.

The count argument will be available in a later version and is not available in 2.6, 2.8, 3.0

*Return value

Bulk string reply: the removed element, or nil when key does not exist.

*Examples

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

*Specification of the behavior when count is passed

If count is bigger than the number of elements inside the Set, the command will only return the whole set without additional elements.

*Distribution of returned elements

Note that this command is not suitable when you need a guaranteed uniform distribution of the returned elements. For more information about the algorithms used for SPOP, look up both the Knuth sampling and Floyd sampling algorithms.

*Count argument extension

Redis 3.2 will be the first version where an optional count argument can be passed to SPOP in order to retrieve multiple elements in a single call. The implementation is already available in the unstable branch.

Comments powered by Disqus