redis集合(Set)

Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。



实例

redis 127.0.0.1:6379> SADD catroom redis
(integer) 1
redis 127.0.0.1:6379> SADD catroom mongodb
(integer) 1
redis 127.0.0.1:6379> SADD catroom mysql
(integer) 1
redis 127.0.0.1:6379> SADD catroom mysql
(integer) 0
redis 127.0.0.1:6379> SMEMBERS catroom

1) "mysql"
2) "mongodb"
3) "redis"

在以上实例中我们通过 SADD 命令向名为 catroom 的集合插入的三个元素。

Redis set 使用以下方式向集合中添加一个成员,语法格式如下:

127.0.0.1:6379> SADD key member [member ...]

key:指定一个键
member:集合中要存储的成员。



Set相关命令详细实例

#创建集合并添加多个成员
127.0.0.1:6379> SADD user:1 python java mysql
(integer) 3
127.0.0.1:6379> SADD user:2 python c redis
(integer) 3
#对两个集合求交集,求出他们共同关注的编程技术
127.0.0.1:6379> SINTER user:1 user:2
1) "python"
#两个集合求并集
127.0.0.1:6379> SUNION user:1 user:2
1) "java"
2) "python"
3) "mysql"
4) "redis"
5) "c"
#查看集合所有成员
127.0.0.1:6379> SMEMBERS user:1
1) "mysql"
2) "java"
3) "python"
#两个集合求并集,并把结果保存到另外一个user:3集合中
127.0.0.1:6379> SUNIONSTORE user:3 user:1 user:2
(integer) 5
#查看集合所有成员
127.0.0.1:6379> SMEMBERS user:3
1) "java"
2) "python"
3) "mysql"
4) "redis"
5) "c"
#从集合中弹出一个元素
127.0.0.1:6379> SPOP user:1 1
1) "python"
#从集合中弹出两个元素
127.0.0.1:6379> SPOP user:1 2
1) "mysql"
2) "java"
#查看集合元素个数
127.0.0.1:6379> SCARD user:2
(integer) 3
#迭代集合中元素
127.0.0.1:6379> SSCAN user:3 0
1) "0"
2) 1) "mysql"
   2) "redis"
   3) "java"
   4) "python"
   5) "c"


Set常用命令汇总:

  1. SADD key member1 [member2]
    向集合中添加一个或者多个元素,并且自动去重。
  2. SCARD key
    返回集合中元素的个数。
  3. SDIFF key1 [key2]
    求两个或多个集合的差集。
  4. SDIFFSTORE destination key1 [key2]
    求两个集合或多个集合的差集,并将结果保存到指定的集合中。
  5. SINTER key1 [key2]
    求两个或多个集合的交集。
  6. SINTERSTORE destination key1 [key2]
    求两个或多个集合的交集,并将结果保存到指定的集合中。
  7. SISMEMBER key member
    查看指定元素是否存在于集合中。
  8. SMEMBERS key
    查看集合中所有元素。
  9. SMOVE source destination member
    将集合中的元素移动到指定的集合中。
  10. SPOP key [count]
    弹出指定数量的元素。
  11. SRANDMEMBER key [count]
    随机从集合中返回指定数量的元素,默认返回 1个。
  12. SREM key member1 [member2]
    删除一个或者多个元素,若元素不存在则自动忽略。
  13. SUNION key1 [key2]
    求两个或者多个集合的并集。
  14. SUNIONSTORE destination key1 [key2]
    求两个或者多个集合的并集,并将结果保存到指定的集合中。
  15. SSCAN key cursor [match pattern] [count count]
    该命令用来迭代的集合中的元素。