SMEMBERS:获取集合包含的所有元素

通过使用 SMEMBERS 命令,用户可以取得集合包含的所有元素:

SMEMBERS set

以下代码展示了如何使用 SMEMBERS 命令去获取 fruits 集合、favoritenumbers 集合以及 databases 集合的所有元素:

redis> SMEMBERS fruits
1) "banana"
2) "cherry"
3) "apple"
redis> SMEMBERS favorite-numbers
1) "12345"
2) "999"
3) "3.14"
4) "1024"
5) "10086"
redis> SMEMBERS databases
1) "Redis"
2) "PostgreSQL"
3) "MongoDB"
4) "MySQL"

元素的无序排列

因为 Redis 集合以无序的方式存储元素,并且 SMEMBERS 命令在获取集合元素时也不会对元素进行任何排序动作,所以根据元素添加顺序的不同,2 个包含相同元素的集合在执行 SMEMBERS 命令时的结果也可能会有所不同。

例如,在以下代码中,我们就以相反的顺序向 fruits-a 和 fruits-b 这 2 个集合添加了相同的 3 个元素,但是这两个集合在执行 SMEMBERS 命令时的结果并不相同:

redis> SADD fruits-a "apple" "banana" "cherry"
(integer) 3
redis> SMEMBERS fruits-a
1) "cherry"
2) "banana"
3) "apple"
redis> SADD fruits-b "cherry" "banana" "apple"
(integer) 3
redis> SMEMBERS fruits-b
1) "cherry"
2) "apple"
3) "banana"

因此,我们在使用 SMEMBERS 命令以及集合的时候,不应该对集合元素的排列顺序做任何假设。如果有需要,我们可以在客户端对 SMEMBERS 命令返回的元素进行排序,或者直接使用 Redis 提供的有序结构(比如列表和有序集合)。

其它信息

  • 复杂度:O(N),其中 N 为集合包含的元素数量。

  • 版本要求:SMEMBERS 命令从 Redis 1.0.0 版本开始可用。