版权声明: 转载请注明出处!本文采用 知识共享 署名-非商业性使用-禁止演绎 4.0 国际许可协议
前言
今天这几个命令还是集合的操作,如果看了前一篇求几个差集、交集、并集操作以后,这篇文章就可以很快的理解了,其中唯一的不同是今天学习的这个几个命令不是将最后的结果集合直接返回,而是存储到一个键中,方便后续操作。
这篇笔记中的3个命令分别是 SDIFFSTORE 、 SINTERSTORE 、 SUNIONSTORE ,可以参考:
- 《Redis每日一练(31):SDIFF、SINTER和SUNION命令》 中的 SDIFF 、 SINTER 、 SUNION 命令
SDIFFSTORE
- 最早出现版本:1.0.0
- 时间复杂度:O(N)
- 命令参数:SDIFFSTORE destination key [key …]
- 操作类型:sets
- 官方文档
作用
计算差集并将差集结果存储到 destination 指定的键中,相比于 SDIFF 命令多了一个 destination 参数用来存储结果集合,返回值是结果集合中的元素个数。
如果 destination 指定的键本身是存在的,那么执行完这个指令之后, destination 原来的内容会被覆盖掉。
练习
使用 SADD 命令创建三个集合然后求差集,并将结果存储在一个键 result 中:
127.0.0.1:6379> SADD seta 1 2 3 4 5
(integer) 5
127.0.0.1:6379> SADD setb 2 4 6 7
(integer) 4
127.0.0.1:6379> SADD setc 3 7 9
(integer) 3
127.0.0.1:6379> SDIFFSTORE result seta setb setc
(integer) 2
127.0.0.1:6379> SMEMBERS result
1) "1"
2) "5"
127.0.0.1:6379>
SINTERSTORE
- 最早出现版本:1.0.0
- 时间复杂度:O(N*M) (N是集合中元素数的最小个数,M是求交集的集合数量)
- 命令参数:SINTER destination key [key …]
- 操作类型:sets
- 官方文档
作用
求多个集合的交集,并将交集的结果存储在参数 destination 指定的键中,如果 destination 指定的键本身是存在的,那么执行完这个指令之后, destination 原来的内容会被覆盖掉。
练习
使用 SADD 命令创建两个多元素的集合,然后使用 SINTERSTORE 求交集并存储在键 result 中:
127.0.0.1:6379> SADD seta 1 2 3 4 5
(integer) 5
127.0.0.1:6379> SADD setb 2 4 6 7
(integer) 4
127.0.0.1:6379> SINTERSTORE result seta setb
(integer) 2
127.0.0.1:6379> SMEMBERS result
1) "2"
2) "4"
127.0.0.1:6379>
SUNIONSTORE
- 最早出现版本:1.0.0
- 时间复杂度:O(N) (参数指定的所有集合中元素的总数)
- 命令参数: SUNION destination key [key …]
- 操作类型:sets
- 官方文档
作用
求集合的并集,并将交集的结果存储在参数 destination 指定的键中,如果 destination 指定的键本身是存在的,那么执行完这个指令之后, destination 原来的内容会被覆盖掉。
练习
使用 SADD 命令创建三个多元素的集合,然后使用 SUNIONSTORE 求并集并存储到键 result 中:
127.0.0.1:6379> SADD seta 1 2 3 4 5
(integer) 5
127.0.0.1:6379> SADD setb 2 4 6 7
(integer) 4
127.0.0.1:6379> SADD setc 3 7 9
(integer) 3
127.0.0.1:6379> SUNIONSTORE result seta setb setc
(integer) 8
127.0.0.1:6379> SMEMBERS result
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "9"
127.0.0.1:6379>
总结
- SDIFF 命令可以求集合差集,并将结果存储到指定的几集合中,返回结果集合的元素个数。
- SINTER 命令可以求集合的交集,并将结果存储到指定的几集合中,返回结果集合的元素个数。
- SINTER 命令可以求集合的并集,并将结果存储到指定的几集合中,返回结果集合的元素个数。
2019-12-29 23:55:30
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




