集合的特点是唯一性、无序性。集合可以进行求并集、交集和差集。在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"