set集合是无序、key不可重复的

sadd

添加一个sadd集合

语法:sadd <key> <value1> <value2>

1
2
3
# 新建一个set集合set1
127.0.0.1:6379> sadd set1 v1 v2 v3 v4
(integer) 4

smembers

查看set集合中所有元素

1
2
3
4
5
6
# 查看set1集合中所有元素
127.0.0.1:6379> smembers set1
1) "v3"
2) "v2"
3) "v1"
4) "v4"

sismember

判断set集合中是否存在某值

1
2
3
4
5
6
# 判断set1集合中是否存在v1
127.0.0.1:6379> sismember set1 v1
(integer) 1
# 判断set1集合中是否存在v5
127.0.0.1:6379> sismember set1 v5
(integer) 0

scard

返回set集合中元素的个数

1
2
3
# 返回set1集合中元素的个数
127.0.0.1:6379> scard set1
(integer) 4

srem

删除集合中的指定元素

语法:srem <key> <value1> <value2>……

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 查看set1集合中所有元素
127.0.0.1:6379> smembers set1
1) "v3"
2) "v2"
3) "v1"
4) "v4"
# 删除set1中的v1和v2
127.0.0.1:6379> srem set1 v1 v2
(integer) 2
# 查看set1集合中所有元素
127.0.0.1:6379> smembers set1
1) "v3"
2) "v4"
# 删除set1中的v3
127.0.0.1:6379> srem set1 v3
(integer) 1
# 查看set1集合中所有元素
127.0.0.1:6379> smembers set1
1) "v4"

spop

随机从集合中吐出一个值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 新建一个set集合set2
127.0.0.1:6379> sadd set2 v1 v2 v3 v4
(integer) 4
# 随机从集合中吐出一个值
127.0.0.1:6379> spop set2
"v1"
127.0.0.1:6379> spop set2
"v3"
127.0.0.1:6379> spop set2
"v4"
127.0.0.1:6379> spop set2
"v2"
127.0.0.1:6379> spop set2
(nil)

srandmember

随机集合中取出n个值,但是不会删除集合中的元素

语法:srandmember <key> <n>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 新建一个set集合set3
127.0.0.1:6379> sadd set3 v1 v2 v3 v4
(integer) 4
# 随机吐出2个值
127.0.0.1:6379> srandmember set3 2
1) "v2"
2) "v3"
127.0.0.1:6379> srandmember set3 2
1) "v1"
2) "v3"
127.0.0.1:6379> srandmember set3 2
1) "v2"
2) "v4"
127.0.0.1:6379> srandmember set3 2
1) "v1"
2) "v2"
# 查看set3中所有元素,可见set3中的元素并没有删除
127.0.0.1:6379> smembers set3
1) "v3"
2) "v2"
3) "v1"
4) "v4"

smove

把集合中的一个值移动到另一个集合中去

语法:smove <源集合> <目标集合> <value>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 新建一个集合set4
127.0.0.1:6379> sadd set4 v1 v2
(integer) 2
# 新建一个集合set5
127.0.0.1:6379> sadd set5 v3 v4
(integer) 2
# 将set4中的v1移动到set5中
127.0.0.1:6379> smove set4 set5 v1
(integer) 1
# 查看set4中的所有元素
127.0.0.1:6379> smembers set4
1) "v2"
# 查看set5中的所有元素
127.0.0.1:6379> smembers set5
1) "v1"
2) "v3"
3) "v4"

sinter

返回两个集合的交集元素

语法:sinter <key1> <key2>

1
2
3
4
5
6
7
8
9
# 新建两个set集合s1、s2
127.0.0.1:6379> sadd s1 v1 v2 v3 v4
(integer) 4
127.0.0.1:6379> sadd s2 v3 v4 v5 v6
(integer) 4
# 返回s1、s2的交集元素
127.0.0.1:6379> sinter s1 s2
1) "v3"
2) "v4"

sunion

返回两个集合的并集元素

语法:suinon <key1> <key2>

1
2
3
4
5
6
7
8
9
10
11
12
13
# 新建两个set集合s3、s4
127.0.0.1:6379> sadd s3 v1 v2 v3 v4
(integer) 4
127.0.0.1:6379> sadd s4 v3 v4 v5 v6
(integer) 4
# 返回s3、s4的并集元素
127.0.0.1:6379> sunion s3 s4
1) "v1"
2) "v5"
3) "v3"
4) "v2"
5) "v6"
6) "v4"

sdiff

返回两个集合中的差集(补集)元素(包含在key1中但是不包含key2中的)

语法:sdiff <key1> <key2>

1
2
3
4
5
6
7
8
9
# 新建两个set集合s5、s6
127.0.0.1:6379> sadd s5 v1 v2 v3 v4
(integer) 4
127.0.0.1:6379> sadd s6 v3 v4 v5 v6
(integer) 4
# 返回s5、s6的差集元素
127.0.0.1:6379> sdiff s5 s6
1) "v1"
2) "v2"