教程 > Redis教程 > Redis 命令 阅读:30

Redis SPOP 命令

Redis SPOP 命令

返回 Redis集合(sets)


Redis SPOP 命令用于移除集合中的指定 key 的一个或多个随机元素,移除后会返回移除的元素。

该命令类似 Srandmember 命令,但 SPOP 将随机元素从集合中移除并返回,而 Srandmember 则仅仅返回随机元素,而不对集合进行任何改动。

语法

redis SPOP 命令基本语法如下:

redis 127.0.0.1:6379 >SPOP key [count]

count 参数在 3.2+ 版本可用。

可用版本

>= 1.0.0

返回值

  • 被移除的随机元素
  • 当集合不存在或是空集时,返回 nil 。

SPOP 使用 count 参数的约定

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

返回元素的分布

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

Count 参数扩展

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

示例

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

时间复杂度

SPOP 命令时间复杂度:O(1)

返回 Redis集合(sets)

查看笔记

扫码一下
查看教程更方便