集合的特点是唯一性、无序性。集合可以进行求并集、交集和差集。在Redis中,一个集合最多可容纳2^23-1个成员。
相关命令
SADD、SISMEMBER、SREM、SCARD、SMEMBERS、SSCAN、SUNION、SUNIONSTORE、SINTER、SINTERSTORE、SDIFF、SDIFFSTORE
操作
1、使用SADD命令向集合中添加元素
127.0.0.1:6379> SADD set_1 "abc"
(integer) 1
127.0.0.1:6379> SADD set_1 "def"
(integer) 1
2、使用SISMEMBER命令判断一个元素是否在集合中
127.0.0.1:6379> SISMEMBER set_1 "abc"
(integer) 1
127.0.0.1:6379> SISMEMBER set_1 "abcd" #不在集合中就返回0
(integer) 0
3、使用SREM命令从集合中移除元素
127.0.0.1:6379> SREM set_1 "def"
(integer) 1
127.0.0.1:6379> SREM set_1 "def" #如果不存在就返回0
(integer) 0
4、使用SCARD命令获取集合中成员的数量
127.0.0.1:6379> SCARD set_1
(integer) 1
5、使用SMEMBERS命令获取集合中的所有元素
127.0.0.1:6379> SMEMBERS set_1
1) "abc"
注意:当一个集合中的元素很多的时候,使用SMEMBERS命令会阻塞服务器。所以不能使用SMEMBERS命令,而推荐使用SSCAN命令。
6、使用SSCAN命令来迭代集合中的元素(用法类似于HSCAN命令)
127.0.0.1:6379> SSCAN set_1 0
1) "0"
2) 1) "abc"
集合的并集、交集、差集
SUNION、SUNIONSTORE:计算集合的并集
SINTER、SINTERSTORE:计算集合的交集
SDIFF、SDIFFSTORE:计算集合的差集
没有STORE结尾的命令只返回相应操作的结果集合,带有STORE的命令则会将结果存储到一个指定的键中。
准备数据:
127.0.0.1:6379> SADD set_2 1 2 3 4 5 #集合set_2
(integer) 5
127.0.0.1:6379> SADD set_3 4 5 6 7 8 #集合set_3
(integer) 5
127.0.0.1:6379> SMEMBERS set_2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SMEMBERS set_3
1) "4"
2) "5"
3) "6"
4) "7"
5) "8"
7、SUNION、SUNIONSTORE命令求并集
127.0.0.1:6379> SUNION set_2 set_3
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
127.0.0.1:6379> SUNIONSTORE set_4 set_2 set_3
(integer) 8
127.0.0.1:6379> SMEMBERS set_4
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
8、SINTER、SINTERSTORE命令求交集
127.0.0.1:6379> SINTER set_2 set_3
1) "4"
2) "5"
127.0.0.1:6379> SINTERSTORE set_5 set_2 set_3
(integer) 2
127.0.0.1:6379> SMEMBERS set_5
1) "4"
2) "5"
9、SDIFF、SDIFFSTORE命令求差集
127.0.0.1:6379> SDIFF set_2 set_3
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SDIFFSTORE set_6 set_2 set_3
(integer) 3
127.0.0.1:6379> SMEMBERS set_6
1) "1"
2) "2"
3) "3"