介绍

  • 交集:在所有集合中出现过至少两次的元素
  • 并集:将多个集合的元素合并到一起,并去掉重复元素
  • 差集:在第一个集合中存在,在其他集合中都不存在的元素

相关命令

命令 说明
sinter key [key …] 获取所有集合的交集
sinterstore desitination key [key …] 获取所有集合的交集并覆盖掉desitination集合的值
sunion key [key …] 获取所有集合中的所有元素并去重
sunionstore destination key [key …] 获取所有集合中的所有元素并去重并覆盖掉desitination集合的值
sdiff key [key …] 获取一个集合中有的元素而其他集合没有的元素
sdiffstore destination key [key …] 获取一个集合中有的元素而其他集合没有的元素并覆盖掉desitination集合的值

交集

sinter key [key …]

127.0.0.1:6379> sadd key1 1 2 3 4
(integer) 4
127.0.0.1:6379> sadd key2 1 5 2 8
(integer) 4
127.0.0.1:6379> sinter key1 key2
1) "1"
2) "2"

从上得知:1和2在key1和key2的所有元素中至少出现过两次,那么key1和key2的交集就是1和2。

sinterstore desitination key [key …]

127.0.0.1:6379> sadd key1 1 2 3 4
(integer) 4
127.0.0.1:6379> sadd key2 1 5 2 8
(integer) 4
127.0.0.1:6379> sadd target 8
(integer) 1
127.0.0.1:6379> sinterstore target  key1 key2
(integer) 2
127.0.0.1:6379> SMEMBERS target
1) "1"
2) "2"

从上得知:使用该命令之后,返回值是2,说明交集有2个,并且会先删除掉target已有的元素,然后将交集写入target。

127.0.0.1:6379> sadd key1 1 2 3 4
(integer) 4
127.0.0.1:6379> sadd key2 1 5 2 8
(integer) 4
127.0.0.1:6379> get target
(nil)
127.0.0.1:6379> sinterstore target  key1 key2
(integer) 2
127.0.0.1:6379> SMEMBERS target
1) "1"
2) "2"

从上得知:如果target不存在,会先创建这个key,然后将交集写入该key。

127.0.0.1:6379> sadd key1 1 2 3 4
(integer) 4
127.0.0.1:6379> sadd key2 1 5 2 8
(integer) 4
127.0.0.1:6379> set target value
OK
127.0.0.1:6379> sinterstore target  key1 key2
(integer) 2
127.0.0.1:6379> SMEMBERS target
1) "1"
2) "2"

从上得知:如果target的key类型不是set,使用该命令之后会先把该key的类型改成set,然后将交集写入key。

总结:

  1. 如果desitination里面有值,会先删掉里面的元素,最后写入交集的元素,并返回交集有多少个。
  2. 如果desitination不存在,会先创建key,最后写入交集的元素,并返回交集有多少个。
  3. 如果desitination的类型不是set,会先将类型改成set,最后写入交集的元素,并返回交集有多少个。

并集

sunion key [key …]

127.0.0.1:6379> sadd key1 1 2 3 4
(integer) 4
127.0.0.1:6379> sadd key2 1 5 2 8
(integer) 4
127.0.0.1:6379> sunion key1 key2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "8"

从上得知:并集就是获得所有参集合中的所有元素并去重。

sunionstore destination key [key …]

和sinterstore desitination key [key …]命令差不多,区别是这个是获得并集。

差集

sdiff key key[key …]

127.0.0.1:6379> sadd key1 1 2 3 4
(integer) 4
127.0.0.1:6379> sadd key2 1 5 2 8
(integer) 4
127.0.0.1:6379> sadd key4 3 8
(integer) 2
127.0.0.1:6379> sdiff key1 key2 key3
1) "4"

从上得知:差集就是第1个位置的key中存在的元素,而其他位置都不存在的元素就叫差集。

sdiffstore destination key key[key …]

和sinterstore desitination key [key …]命令差不多,区别是这个是获得差集。

SpringBoot的方式

前提操作:引入Redis相关依赖然后注入RedisTemplet

交集

1)、获取两个集合的交集

Set<V> intersect(K key, K otherKey);

2)、获取key集合与多个集合的交集

Set<V> intersect(K key, Collection<K> otherKeys);

3)、key 集合与 otherKey 集合的交集存储到 destKey 集合中

Long intersectAndStore(K key, Collection<K> otherKeys, K destKey);

4、key 集合与多个集合的交集存储到 destKey 集合中

Long intersectAndStore(K var1, Collection<K> var2, K var3);

并集

1)、获取两个集合的并集

Set<V> union(K key, K otherKey);

2)、获取key集合与多个集合的并集

Set<V> union(K key, Collection<K> otherKey);

3)、key 集合与 otherKey 集合的并集存储到 destKey 中

Long unionAndStore(K key, K otherKey, K destKey);

4)、key 集合与多个集合的并集存储到 destKey 中

Long unionAndStore(K key, Collection<K> var2, K destKey);

差集

1)、获取两个集合的差集

Set<V> difference(K key, K otherKey);返回值:key-otherKey的差集

2)、获取 key 集合与多个集合的差集

Set<V> difference(K key, Collection<K> otherKeys);

3)、key 集合与 otherKey 集合的差集存储到 destKey 中

Long differenceAndStore(K key, K otherKey, K destKey);

4)、key 集合与多个集合的差集存储到 destKey 中

Long differenceAndStore(K key, Collection<K> otherKeys, K destKey);

Redis 交集并集差集相关推荐

  1. lambda 对象去重_采用java8 lambda表达式 实现 java list 交集 并集 差集 去重复并集...

    采用java8 lambda表达式 实现java list 交集/并集/差集/去重并集 一般的javaList 交.并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的 ...

  2. java实现交集并集差集

    java实现交集并集差集 ***`package 第一次模拟测试; import java.util.ArrayList; import java.util.HashSet; import java. ...

  3. oracle 并集 时间_Oracle集合运算符 交集 并集 差集

    集合运算符:UNION/UNION ALL 并集,INTERSECT 交集,MINUS 差集 一.union求并集,公共部分只有包含一次 例:求emp表ename中含'A'或含有'M' SQL> ...

  4. 采用java8 lambda表达式 实现 java list 交集 并集 差集 去重复并集

    采用java8 lambda表达式 实现java list 交集/并集/差集/去重并集 一般的javaList 交.并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的 ...

  5. go自定义和使用set包处理列表 交集 并集 差集

    自定义交集 并集 差集 package mainimport "fmt"func main() {aList := []string{"1", "2& ...

  6. MySQL求交集 并集 差集

    MySQL求交集 并集 差集 交集 两个表之间相同的 并集 两个表之间的总和 ps: union 自带去重 差集 两个表直接的差值

  7. oracle表交集并集,oracle交集,并集,差集

    oracle交集,并集,差集 [sql] create table test1 ( name varchar(10), NN varchar(10) ); insert into test1 valu ...

  8. sort求交集并集差集

    uniq -u    取出只出现过一次的元素,用来求差集 uniq -c     group by uniq -d     取出出现次数大于等于2的元素,用来求交集 sort 1 2 和cat 1 2 ...

  9. JAVA Hashset求集合的交集并集差集

    JAVA Hashset求集合的交集并集差集 Hashset是Set接口较为常见的一个子类,该子类的最大特点是不允许保存重复的元素,并且所有的内容都采用散列(无序)的方式进行存储. package c ...

最新文章

  1. 机房收费系统【VB版】——上下机
  2. IIS支持http协议的:put、delete等方法
  3. python培训出来的有公司要吗-Python培训讲师靠谱吗
  4. Nginx基本数据结构之ngx_hash_keys_arrays_t
  5. ENISA报告:ICS-SCADA防护建议
  6. 多项式牛顿迭代(应用:求逆,开根,对数exp)
  7. OpenGL-坐标系
  8. 一句话的设计模式(JAVA版)
  9. 2018 终了,是时候秀出我的 Git 进化日志了!
  10. [整理] TPM 2.0 设备串口通讯协议中文文档
  11. 算术表达式:前缀表达式、中缀表达式、后缀表达式相互转换(手算法)
  12. uni_app UView 2.0 Upload 上传 header 如何配置
  13. Atitit 软件国际化原理与概论
  14. kettle日志解析_Kettle运行日志记录
  15. bootstrap+javascript制作体重标准计算器
  16. 戴尔服务器修改主板IP,Dell R410, R710设置iDRAC(远控卡)的ip地址
  17. mvc2 mvc_迅捷的MVC
  18. 小程序设置整个页面的背景颜色
  19. 如何将视频生成二维码?
  20. Postman做接口测试设置断言

热门文章

  1. 5. 机器人动力学---串联机构牛顿欧拉方程
  2. IT创业见闻04-创业需具备最重要的资源是什么
  3. 优链时代喜获第五届“绽放杯”5G应用征集大赛云XR专题赛一等奖!
  4. 如何输出字符串中的增补字符?-java
  5. 亚马逊欧洲站如何注册?这些注意事项你知道吗?
  6. 关于傅里叶变换:时移与频移解读之解读
  7. 一文让你彻底掌握【Python中的filter函数】
  8. win10下安装BC3.1精简环境
  9. JavaFX-TitledPane
  10. 初次使用Smalltalk