SMEMBERS:获取集合包含的所有元素
通过使用 SMEMBERS
命令,用户可以取得集合包含的所有元素:
- SMEMBERS set
以下代码展示了如何使用 SMEMBERS
命令去获取 fruits
集合、 favorite-numbers
集合以及 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
命令在获取集合元素时也不会对元素进行任何排序动作,所以根据元素添加顺序的不同,两个包含相同元素的集合在执行 SMEMBERS
命令时的结果也可能会有所不同。
比如在以下代码中,我们就以相反的顺序向 fruits-a
和 fruits-b
两个集合添加了相同的三个元素,但是这两个集合在执行 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 版本开始可用。 |