SINTER
SINTER key [key …]
可用版本: >= 1.0.0
时间复杂度: O(N * M), N 为给定集合当中基数最小的集合, M 为给定集合的个数。
返回所有给定集合的交集。不存在的key
会被视为空集。
演示
当给定的key
中有不存在或者是空集的情况时,根据集合运算定律,结果很显然也为空集。
127.0.0.1:6379> scard set
(integer) 23
127.0.0.1:6379> scard set2
(integer) 0
127.0.0.1:6379> sinter set set2
(empty list or set)
否则,返回所有给定集合的交集。
127.0.0.1:6379> smembers set
1) "0"
2) "1"
3) "2"
4) "3"
5) "5"
6) "6"
7) "7"
8) "8"
9) "9"
10) "10"
11) "11"
12) "12"
13) "13"
14) "14"
15) "15"
16) "16"
17) "17"
18) "18"
19) "19"
20) "20"
21) "21"
22) "22"
23) "23"
127.0.0.1:6379> smembers set2
1) "12"
2) "17"
3) "23"
4) "25"
5) "56"
6) "78"
7) "90"
127.0.0.1:6379> sinter set set2
1) "12"
2) "17"
3) "23"
当给定的key
中存在不是集合的类型时,命令会返回错误。
127.0.0.1:6379> sinter set list
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "1"
SINTERSTORE
SINTERSTORE destination key [key …]
可用版本: >= 1.0.0
时间复杂度: O(N * M), N 为给定集合当中基数最小的集合, M 为给定集合的个数。
这个命令类似于SINTER命令,但它将结果保存到destination
集合,而不是简单地返回结果集。如果 destination
集合已经存在,则将其覆盖。destination
可以是key
本身。
演示
如果 destination
集合已经存在,则将其覆盖。并且命令返回 destination
集合的元素数量。
127.0.0.1:6379> smembers set3
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379> smembers set
1) "5"
2) "6"
3) "8"
4) "12"
5) "13"
6) "17"
7) "21"
8) "23"
127.0.0.1:6379> smembers set2
1) "12"
2) "17"
3) "23"
4) "25"
5) "56"
6) "78"
7) "90"
127.0.0.1:6379> sinterstore set3 set set2
(integer) 3
127.0.0.1:6379> smembers set3
1) "12"
2) "17"
3) "23"
如果 destination
不存在,命令会先创建一个空集合,再在这个空集合上执行该命令。
127.0.0.1:6379> exists set5
(integer) 0
127.0.0.1:6379> sinterstore set5 set set2
(integer) 3
127.0.0.1:6379> smembers set5
1) "12"
2) "17"
3) "23"
当给定的destination
或多个key
中存在不是集合的类型时,命令会返回错误。
SUNION
SUNION key [key …]
可用版本: >= 1.0.0
时间复杂度: O(N), N 是所有给定集合的成员数量之和。
返回所有给定集合的并集。不存在的key
同样被视为空集。
演示
返回所有给定集合的并集。
127.0.0.1:6379> smembers set3
1) "12"
2) "17"
3) "23"
4) "50"
5) "79"
6) "100"
7) "101"
127.0.0.1:6379> smembers set2
1) "12"
2) "17"
3) "23"
4) "25"
5) "56"
6) "78"
7) "90"
127.0.0.1:6379> smembers set
1) "5"
2) "6"
3) "8"
4) "12"
5) "13"
6) "17"
7) "21"
8) "23"
127.0.0.1:6379> sunion set set2 set3
1) "5"
2) "6"
3) "8"
4) "12"
5) "13"
6) "17"
7) "21"
8) "23"
9) "25"
10) "50"
11) "56"
12) "78"
13) "79"
14) "90"
15) "100"
16) "101"
当给定的key
中存在不是集合的类型时,命令会返回错误。
SUNIONSTORE
SUNIONSTORE destination key [key …]
可用版本: >= 1.0.0
时间复杂度: O(N), N 是所有给定集合的成员数量之和。
这个命令类似于SUNION命令,但它将结果保存到destination
集合,而不是简单地返回结果集。如果 destination
集合已经存在,则将其覆盖。destination
可以是key
本身。
演示
如果 destination
集合已经存在,则将其覆盖。并且命令返回 destination
集合的元素数量。
127.0.0.1:6379> smembers set2
1) "12"
2) "17"
3) "23"
4) "25"
5) "56"
6) "78"
7) "90"
127.0.0.1:6379> smembers set
1) "5"
2) "6"
3) "8"
4) "12"
5) "13"
6) "17"
7) "21"
8) "23"
127.0.0.1:6379> smembers set4
1) "0"
2) "7"
3) "8"
4) "9"
127.0.0.1:6379> sunionstore set4 set set2
(integer) 12
127.0.0.1:6379> smembers set4
1) "5"
2) "6"
3) "8"
4) "12"
5) "13"
6) "17"
7) "21"
8) "23"
9) "25"
10) "56"
11) "78"
12) "90"
如果 destination
不存在,命令会先创建一个空集合,再在这个空集合上执行该命令。
127.0.0.1:6379> exists set5
(integer) 0
127.0.0.1:6379> sunionstore set5 set set2
(integer) 12
127.0.0.1:6379> smembers set5
1) "5"
2) "6"
3) "8"
4) "12"
5) "13"
6) "17"
7) "21"
8) "23"
9) "25"
10) "56"
11) "78"
12) "90"
当给定的destination
或多个key
中存在不是集合的类型时,命令会返回错误。
SDIFF
SDIFF key [key …]
可用版本: >= 1.0.0
时间复杂度: O(N), N 是所有给定集合的成员数量之和。
返回所有给定集合之间的差集。不存在的key
会被视为空集。
演示
命令返回一个包含差集成员的列表。
127.0.0.1:6379> smembers set
1) "5"
2) "6"
3) "8"
4) "12"
5) "13"
6) "17"
7) "21"
8) "23"
127.0.0.1:6379> smembers set2
1) "12"
2) "17"
3) "23"
4) "25"
5) "56"
6) "78"
7) "90"
127.0.0.1:6379> smembers set3
1) "12"
2) "17"
3) "21"
4) "50"
5) "79"
6) "100"
7) "101"
127.0.0.1:6379> sdiff set set2 set3
1) "5"
2) "6"
3) "8"
4) "13"
当给定的key
中存在不是集合的类型时,命令会返回错误。
SDIFFSTORE
SDIFFSTORE destination key [key …]
可用版本: >= 1.0.0
时间复杂度: O(N), N 是所有给定集合的成员数量之和。
这个命令和SDIFF命令类似,但它将结果保存到destination
集合,而不是简单地返回结果集。如果destination
集合已经存在,则将其覆盖。destination
可以是key
本身。
演示
如果destination
集合已经存在,则将其覆盖。
127.0.0.1:6379> smembers set3
1) "12"
2) "17"
3) "23"
4) "50"
5) "79"
6) "100"
7) "101"
127.0.0.1:6379> smembers set2
1) "12"
2) "17"
3) "23"
4) "25"
5) "56"
6) "78"
7) "90"
127.0.0.1:6379> smembers set5
1) "12"
2) "17"
3) "23"
127.0.0.1:6379> sdiffstore set3 set2 set5
(integer) 4
127.0.0.1:6379> smembers set3
1) "25"
2) "56"
3) "78"
4) "90"
如果 destination
不存在,命令会先创建一个空集合,再在这个空集合上执行该命令。
127.0.0.1:6379> exists set10
(integer) 0
127.0.0.1:6379> sdiffstore set10 set2 set5
(integer) 4
127.0.0.1:6379> smembers set10
1) "25"
2) "56"
3) "78"
4) "90"
当给定的destination
或多个key
中存在不是集合的类型时,命令会返回错误。
Redis中集合的SINTER、SINTERSTORE、SUNION、SUNIONSTORE、SDIFF、SDIFFSTORE命令就介绍到这里。
写博客是博主记录自己的学习过程,如果有错误,请指正,谢谢!