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。
总结:
- 如果desitination里面有值,会先删掉里面的元素,最后写入交集的元素,并返回交集有多少个。
- 如果desitination不存在,会先创建key,最后写入交集的元素,并返回交集有多少个。
- 如果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 交集并集差集相关推荐
- lambda 对象去重_采用java8 lambda表达式 实现 java list 交集 并集 差集 去重复并集...
采用java8 lambda表达式 实现java list 交集/并集/差集/去重并集 一般的javaList 交.并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的 ...
- java实现交集并集差集
java实现交集并集差集 ***`package 第一次模拟测试; import java.util.ArrayList; import java.util.HashSet; import java. ...
- oracle 并集 时间_Oracle集合运算符 交集 并集 差集
集合运算符:UNION/UNION ALL 并集,INTERSECT 交集,MINUS 差集 一.union求并集,公共部分只有包含一次 例:求emp表ename中含'A'或含有'M' SQL> ...
- 采用java8 lambda表达式 实现 java list 交集 并集 差集 去重复并集
采用java8 lambda表达式 实现java list 交集/并集/差集/去重并集 一般的javaList 交.并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的 ...
- go自定义和使用set包处理列表 交集 并集 差集
自定义交集 并集 差集 package mainimport "fmt"func main() {aList := []string{"1", "2& ...
- MySQL求交集 并集 差集
MySQL求交集 并集 差集 交集 两个表之间相同的 并集 两个表之间的总和 ps: union 自带去重 差集 两个表直接的差值
- oracle表交集并集,oracle交集,并集,差集
oracle交集,并集,差集 [sql] create table test1 ( name varchar(10), NN varchar(10) ); insert into test1 valu ...
- sort求交集并集差集
uniq -u 取出只出现过一次的元素,用来求差集 uniq -c group by uniq -d 取出出现次数大于等于2的元素,用来求交集 sort 1 2 和cat 1 2 ...
- JAVA Hashset求集合的交集并集差集
JAVA Hashset求集合的交集并集差集 Hashset是Set接口较为常见的一个子类,该子类的最大特点是不允许保存重复的元素,并且所有的内容都采用散列(无序)的方式进行存储. package c ...
最新文章
- 通用权限管理模块系列——需求分析——列举需求
- 足坛绝代双骄全面数据对比,梅西30岁以后不如C罗?
- 搭建YUM服务器,配置yum客户端
- 计算机在机电一体化应用论文2000字,机电一体化论文3000字范文参考(5)
- vs2013创建及使用DLL
- 104 权限 sudo 解压缩
- json数据解析_shell从入门到放弃解析json数据(2)
- python选择排序算法图解_简单选择排序算法(C语言详解版)
- 每天干攻防,都不会写驱动了
- 存储过程中的事务实现
- 十进制转化八进制,十六进制
- Java并发编程基础-锁-synchronized状态变换
- oracle执行计划中cost cpu
- da8da八字排盘官方下载_da8da六爻排盘
- 软工网络15团队作业8——Beta阶段敏捷冲刺(Day4)
- 长龙航空软件测试招聘,长龙航空空乘面试经验
- 微信小程序onPullDownRefresh onReachBottom实现下拉刷新上拉分页加载
- SQLServer删除数据列
- OpenCv中Numpy常用函数
- Deepin系统卸载alsa-base后导致系统无法启动