这是我参与2022首次更文挑战的第14天,活动详情查看:2022首次更文挑战
hello,你好呀,我是灰小猿,一个超会写bug的程序猿!
在之前的文章中,我们讲解了Redis中前三种数据类型的使用和常见的命令操作,除此之外,在Redis中还有一种set类型的数据类型,今天我们就来和大家讲解一下在Redis中的set数据类型都有哪些常见的使用命令和操作。
Set集合
Redis中的Set集合和Java中的Set集合所表示的含义一样,都是无序集合,且集合中的元素是唯一的,不可重复的,
向集合中添加一个或多个成员
向集合中添加元素的命令是SADD,返回值是插入的成员的个数,格式如下:
SADD key member1 [member2...]
- key表示Set集合的索引
- member1表示要插入的成员,如果有多个成员,那么中间以空格分隔
如我们在索引为myset的集合中插入成员“stest1”、“stest2”、“stest3”
127.0.0.1:6379> SADD myset stest1 stest2 stest3
(integer) 3
获取集合中成员的个数
获取集合中成员个数的命令是SCARD,格式如下:
SCARD key
- key为要查询的集合的索引
如我们查询myset中成员的个数:
127.0.0.1:6379> SCARD myset
(integer) 3
返回第一个集合与其他集合之间的差异
SDIFF命令的作用是返回第一个集合相对于其他集合的差异,格式如下:
SDIFF key1 [key2..]
- key1表示对比的集合
- key2表示被对比的集合,被对比的可以有多个,以空格分开,
如我们现在新建一个集合myset2,并在其中插入一些数据“stest3”、“aaa”、“bbb”,相对于myset2而言,myset1多出了“stest1”和“stest2”。
127.0.0.1:6379> SADD myset2 stest3 aaa bbb
(integer) 3
127.0.0.1:6379> SDIFF myset myset2
1) "stest1"
2) "stest2"
返回所给定所有集合的交集
SINTER命令可以返回所给定的两个或多个集合的交集,格式如下:
SINTER key1 [key2...]
- key1表示第一个集合
- key2表示要对比的集合,可以存在多个,中间以空格分开
如我们新建一个集合myset3,其中的成员为“stest1”、“stest2”、“ccc”,找则myset、myset2、myset3直接的交集为null,而myset和myset2之间的交集是“stest3”
127.0.0.1:6379> SADD myset3 stest1 stest2 ccc
(integer) 3
127.0.0.1:6379> SINTER myset myset2 myset3
(empty list or set)
127.0.0.1:6379> SINTER myset myset2
1) "stest3"
127.0.0.1:6379>
返回集合中的所有元素
如果想要返回集合中的所有成员,则可以使用SMEMBERS,格式如下:
SMEMBERS key
- key为要返回所有成员的集合的索引
如我们返回myset2中的所有元素:
127.0.0.1:6379> SMEMBERS myset2
1) "aaa"
2) "bbb"
3) "stest3"
set集合的操作和list类似,但是不同的是,list中的元素是可以重复的,而set中的元素是不可以重复的,除此之外在Redis中的最后一种数据类型zset也是类似的。我们在下一期讲解!
我是灰小猿,我们下期见!