Redis五大基本数据类型之Set类型

一、Set类型数据的基本操作

1.1 Set类型数据基本性质

  1. Set类型数据中不存在重复值
  2. Set中的数据是无序的

    1.2 常用命令之增删改查

  3. sadd key member1 ... membern:向集合key中添加元素memberi

    1. 127.0.0.1:6379> sadd myset hello
    2. (integer) 1
    3. 127.0.0.1:6379> sadd myset world
    4. (integer) 1
    5. 127.0.0.1:6379> sadd myset xiaohe
    6. (integer) 1
  4. smembers key:查询集合key中的元素

    1. 127.0.0.1:6379> smembers myset
    2. 1) "xiaohe"
    3. 2) "world"
    4. 3) "hello"
  5. sismember key member:查询集合key中是否存在元素member

    1. 127.0.0.1:6379> smembers myset
    2. 1) "xiaohe"
    3. 2) "world"
    4. 3) "hello"
    5. 127.0.0.1:6379> sismember myset xiaohe
    6. (integer) 1
    7. 127.0.0.1:6379> sismember myset test
    8. (integer) 0
  6. scard key:获取集合key中的元素个数

    1. 127.0.0.1:6379> scard myset
    2. (integer) 3
  7. srem key member1 ... membern:移除集合key中的指定元素memberi

    1. 127.0.0.1:6379> smembers myset
    2. 1) "xiaohe"
    3. 2) "world"
    4. 3) "hello"
    5. 127.0.0.1:6379> srem myset hello
    6. (integer) 1
    7. 127.0.0.1:6379> smembers myset
    8. 1) "xiaohe"
    9. 2) "world"
  8. srandmember key [count]:从集合key中随机选出count个元素

    1. 127.0.0.1:6379> smembers myset
    2. 1) "xiaohe"
    3. 2) "world"
    4. 127.0.0.1:6379> SRANDMEMBER myset 1
    5. 1) "world"
    6. 127.0.0.1:6379> SRANDMEMBER myset 1
    7. 1) "world"
    8. 127.0.0.1:6379> SRANDMEMBER myset
    9. "world"
    10. 127.0.0.1:6379> SRANDMEMBER myset
    11. "world"
    12. 127.0.0.1:6379> SRANDMEMBER myset
    13. "xiaohe"
    14. 127.0.0.1:6379> SRANDMEMBER myset 2
    15. 1) "world"
    16. 2) "xiaohe"
  9. spop key [count]:从集合key中随机删除count个元素

    1. 127.0.0.1:6379> SMEMBERS myset
    2. 1) "0"
    3. 2) "1"
    4. 3) "2"
    5. 4) "3"
    6. 5) "4"
    7. 127.0.0.1:6379> spop myset
    8. "0"
    9. 127.0.0.1:6379> spop myset 1
    10. 1) "3"
  10. smove source destination member:将集合source中的元素member移动到集合destination

    1. 127.0.0.1:6379> sadd myset 0 1 2 3
    2. (integer) 4
    3. 127.0.0.1:6379> sadd myset2 4 5 6
    4. (integer) 3
    5. 127.0.0.1:6379> smove myset myset2 0
    6. (integer) 1
    7. 127.0.0.1:6379> SMEMBERS myset
    8. 1) "1"
    9. 2) "2"
    10. 3) "3"
    11. 127.0.0.1:6379> SMEMBERS myset2
    12. 1) "0"
    13. 2) "4"
    14. 3) "5"
    15. 4) "6"

    1.3 进阶命令

  11. sdiff key1 key2:查询集合key1与集合key2不同的元素

    1. 127.0.0.1:6379> sadd set1 0 1 2 3
    2. (integer) 4
    3. 127.0.0.1:6379> sadd set2 2 3 4 5
    4. (integer) 4
    5. 127.0.0.1:6379> sdiff set1 set2
    6. 1) "0"
    7. 2) "1"
  12. sinter key1 key2:查询集合key1与集合key2交集

    1. 可用于实现共同好友、共同关注、二度好友、推荐好友等操作
      1. 127.0.0.1:6379> sadd set1 0 1 2 3
      2. (integer) 4
      3. 127.0.0.1:6379> sadd set2 2 3 4 5
      4. (integer) 4
      5. 127.0.0.1:6379> sinter set1 set2
      6. 1) "2"
      7. 2) "3"
  13. sunion key1 ... keyn:求集合key1 ... keyn的并集

    1. 127.0.0.1:6379> sunion set1 set2
    2. 1) "0"
    3. 2) "1"
    4. 3) "2"
    5. 4) "3"
    6. 5) "4"
    7. 6) "5"
    8. 127.0.0.1:6379> sunion set1 set2 set3
    9. 1) "0"
    10. 2) "1"
    11. 3) "2"
    12. 4) "3"
    13. 5) "4"
    14. 6) "5"
    15. 7) "6"