IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Redis 交集并集差集 -> 正文阅读

[大数据]Redis 交集并集差集

介绍

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

相关命令

命令说明
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);
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-24 18:15:37  更:2022-05-24 18:18:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:49:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码