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

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

  1. SMEMBERS set

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

  1. redis> SMEMBERS fruits
  2. 1) "banana"
  3. 2) "cherry"
  4. 3) "apple"
  5.  
  6. redis> SMEMBERS favorite-numbers
  7. 1) "12345"
  8. 2) "999"
  9. 3) "3.14"
  10. 4) "1024"
  11. 5) "10086"
  12.  
  13. redis> SMEMBERS databases
  14. 1) "Redis"
  15. 2) "PostgreSQL"
  16. 3) "MongoDB"
  17. 4) "MySQL"

元素的无序排列

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

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

  1. redis> SADD fruits-a "apple" "banana" "cherry"
  2. (integer) 3
  3.  
  4. redis> SMEMBERS fruits-a
  5. 1) "cherry"
  6. 2) "banana"
  7. 3) "apple"
  8.  
  9. redis> SADD fruits-b "cherry" "banana" "apple"
  10. (integer) 3
  11.  
  12. redis> SMEMBERS fruits-b
  13. 1) "cherry"
  14. 2) "apple"
  15. 3) "banana"

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

其他信息

属性
复杂度O(N),其中 N 为集合包含的元素数量。
版本要求SMEMBERS 命令从 Redis 1.0.0 版本开始可用。