@[TOC]

一、前言

Redis的set相当于Java语言里面的HashSet,它内部键值对是无序的、唯一的。它的内部实现相当于一个特殊的字典,字典中所有的value都是一个值NULL。

还有相关命令有需要的可以看一下

Redis中的Hash类型12个常用命令(图文例子)
Redis中的String类型常用方法(图文例子)
Redis常用数据类型——list九大常用命令(图文例子)

二、sadd命令

作用:向set中添加元素,可以一次添加多个
格式:sadd key member [member ...]

举例

127.0.0.1:6379> sadd student xiaoming
(integer) 1
## 查看set中所有的元素
127.0.0.1:6379> smembersstudent
1) "xiaoming"
127.0.0.1:6379> sadd student xiaohong xiaoliang
(integer) 2
## 查看set中所有的元素
127.0.0.1:6379> smembers student
1) "xiaoliang"
2) "xiaoming"
3) "xiaohong"

三、smembers 命令

作用:获取set集合中所有的元素
格式:smembers key

举例

127.0.0.1:6379> smembers student
1) "xiaoliang"
2) "xiaoming"
3) "xiaohong"

四、srem命令

作用:删除set集合中的元素,可以一次删除多条
格式:srem key member [member ...]

举例

127.0.0.1:6379> smembers student
1) "xiaoliang"
2) "xiaoming"
3) "xiaohong"
127.0.0.1:6379> srem student xiaoming
(integer) 1
127.0.0.1:6379> smembers student
1) "xiaoliang"
2) "xiaohong"

五、scard命令

作用:获取set集合中元素的个数
格式: scard key

举例

127.0.0.1:6379> smembers student
1) "xiaoliang"
2) "xiaohong"
127.0.0.1:6379> scard student
(integer) 2

六、spop命令

作用:输入的元素个数,并随机删除返回删除的元素
格式:spop key [count]

举例

127.0.0.1:6379> smembers student
1) "xiaoliang"
2) "4"
3) "2"
4) "3"
5) "1"
127.0.0.1:6379> spop student 2
1) "4"
2) "2"
127.0.0.1:6379> smembers student
1) "xiaoliang"
2) "3"
3) "1"

七、sismember命令

作用:判断元素是否在集合中,存在返回1,否则返回0
格式: sismember key member

举例

127.0.0.1:6379> smembers student
1) "xiaoliang"
2) "3"
3) "1"
127.0.0.1:6379> sismember student xiaoliang
(integer) 1
127.0.0.1:6379> sismember student xiaoliang1
(integer) 0

八、sdiff命令

作用:求两个set集合的差集,返回第一个set里面的元素,而不在后面任何set集合里面的元素(求前面的set)
格式: sdiff key [key ...]

举例

127.0.0.1:6379> smembers student
1) "xiaoliang"
2) "3"
3) "1"
127.0.0.1:6379> smembers student1
1) "xiaoliang"
2) "4"
3) "2"
4) "1"
5) "5"
127.0.0.1:6379> sdiff student student1
1) "3"
127.0.0.1:6379> sdiff student1 student
1) "2"
2) "4"
3) "5"

九、sdiffstore命令

作用:求差集,同上的解释,比上面多的就是把求得差集保存在另一个set集合中
格式:sdiffstore destination key [key ...]

举例

127.0.0.1:6379> sdiffstore student2 student1 student
(integer) 3
127.0.0.1:6379> smembers student2
1) "2"
2) "4"
3) "5"

十、sinter命令

作用:求两个set集合的交集元素
格式:sinter key [key ...]

举例

127.0.0.1:6379> smembers student
1) "xiaoliang"
2) "3"
3) "1"
127.0.0.1:6379> smembers student1
1) "xiaoliang"
2) "4"
3) "2"
4) "1"
5) "5"
127.0.0.1:6379> sinter student student1
1) "xiaoliang"
2) "1"

十一、sinterstore命令

作用:求两个set集合的交集元素,并保存到另外的set集合中
格式:sinterstore destination key [key ...]

举例

127.0.0.1:6379> sinterstore student3 student1 student
(integer) 2
127.0.0.1:6379> smembers student3
1) "xiaoliang"
2) "1"

十二、sunion命令

作用:求两个set集合的并集
格式: sunion key [key ...]

举例

127.0.0.1:6379> smembers student
1) "xiaoliang"
2) "3"
3) "1"
127.0.0.1:6379> smembers student1
1) "xiaoliang"
2) "4"
3) "2"
4) "1"
5) "5"
127.0.0.1:6379> sunion student student1
1) "xiaoliang"
2) "4"
3) "2"
4) "3"
5) "1"
6) "5"

十三、sunionstore命令

作用:求两个set集合的并集,并保存到另外的set集合中
格式: sunionstore destination key [key ...]

举例

127.0.0.1:6379> sunionstore student4 student1 student
(integer) 6
127.0.0.1:6379> smembers student4
1) "xiaoliang"
2) "4"
3) "2"
4) "3"
5) "1"
6) "5"

十四、smove命令

作用:移动元素从源set集合移动到目标set集合中
格式: smove source destination member
参数解释:
source :源set集合
destination: 目标set集合
member:要要移动的值

举例

## 把元素3从student 集合中移动到student1中
127.0.0.1:6379> smove student student1 3
(integer) 1
127.0.0.1:6379> smembers student
1) "xiaoliang"
2) "1"
127.0.0.1:6379> smembers student1
1) "xiaoliang"
2) "4"
3) "2"
4) "3"
5) "1"
6) "5"

Q.E.D.