Returns one or more random members from a set after removing them. Deletes the set if the last member was popped.
SPOP
key [count]
Removes and returns one or more random members 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.
By default, the command pops a single member from the set. When
provided with the optional count
argument, the reply will
consist of up to count
members, depending on the set’s
cardinality.
One of the following:
Nil reply: if the key does not exist.
Bulk string reply: when called without the count argument, the removed member.
Array reply: when called with the count argument, a list of the removed members.
One of the following:
Null reply: if the key does not exist.
Bulk string reply: when called without the count argument, the removed member.
Set reply: when called with the count argument, the set of removed members.
Without the count argument O(1), otherwise O(N) where N is the value of the passed count.
@fast @set @write
127.0.0.1:6379> SADD myset "one"
(integer) 1
127.0.0.1:6379> SADD myset "two"
(integer) 1
127.0.0.1:6379> SADD myset "three"
(integer) 1
127.0.0.1:6379> SPOP myset
"three"
127.0.0.1:6379> SMEMBERS myset
1) "one"
2) "two"
127.0.0.1:6379> SADD myset "four"
(integer) 1
127.0.0.1:6379> SADD myset "five"
(integer) 1
127.0.0.1:6379> SPOP myset 3
1) "one"
2) "four"
3) "five"
127.0.0.1:6379> SMEMBERS myset
1) "two"
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.SADD, SCARD, SDIFF, SDIFFSTORE, SINTER, SINTERCARD, SINTERSTORE, SISMEMBER, SMEMBERS, SMISMEMBER, SMOVE, SRANDMEMBER, SREM, SSCAN, SUNION, SUNIONSTORE.