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常用命令汇总:
- SADD key member1 [member2]
向集合中添加一个或者多个元素,并且自动去重。 - SCARD key
返回集合中元素的个数。 - SDIFF key1 [key2]
求两个或多个集合的差集。 - SDIFFSTORE destination key1 [key2]
求两个集合或多个集合的差集,并将结果保存到指定的集合中。 - SINTER key1 [key2]
求两个或多个集合的交集。 - SINTERSTORE destination key1 [key2]
求两个或多个集合的交集,并将结果保存到指定的集合中。 - SISMEMBER key member
查看指定元素是否存在于集合中。 - SMEMBERS key
查看集合中所有元素。 - SMOVE source destination member
将集合中的元素移动到指定的集合中。 - SPOP key [count]
弹出指定数量的元素。 - SRANDMEMBER key [count]
随机从集合中返回指定数量的元素,默认返回 1个。 - SREM key member1 [member2]
删除一个或者多个元素,若元素不存在则自动忽略。 - SUNION key1 [key2]
求两个或者多个集合的并集。 - SUNIONSTORE destination key1 [key2]
求两个或者多个集合的并集,并将结果保存到指定的集合中。 - SSCAN key cursor [match pattern] [count count]
该命令用来迭代的集合中的元素。