Redis之Set类型数据常用命令解析

125 阅读2分钟

这是我参与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也是类似的。我们在下一期讲解!

我是灰小猿,我们下期见!