数据类型-set 数据交并差操作 | 学习笔记

简介: 快速学习数据类型-set 数据交并差操作

开发者学堂课程【Redis 入门到精通(基础篇)数据类型-set 数据交并差操作】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/764/detail/13386


数据类型-set 数据交并差操作

 

内容介绍

一、set 类型数据的扩展操作

二、Tips9

 

一、set 类型数据的扩展操作

业务场景

脉脉为了促进用户间的交流,保障业务成单率的提升,需要让每位用户拥有大量的好友,事实上职场新人不具有更多的职场好友,如何快速为用户积累更多的好友?

新浪微博为了增加用户热度,提高用户留存性,需要微博用户在关注更多的人,以此获得更多的信息或热门话题,如何提高用户关注他人的总量?

QQ新用户入网年龄越来越低,这些用户的朋友圈交际圈非常小,往往集中在一所学校甚至一个班级中,如何帮助用户快速积累好友用户带来更多的活跃度?

微信公众号是微信信息流通的渠道之一,增加用户关注的公众号成为提高用户活跃度的一种方式,如何帮助用户积累更多关注的公众号?

美团外卖为了提升成单量,必须帮助用户挖掘美食需求,如何推荐给用户最适合自己的美食?

上面这些都是我们日常生活中经常见到的一些软件,扩大朋友圈,提出的问题就是不同的人,不同的行为,怎样在相同的数据里面比较不同的数据,这就是我们要学的set的扩展操作。

解决方案
求两个集合的交、并、差集
sinter key1 [key2]

sunion key1 [key2]

sdiff key1 [key2]

●求两个集合的交、并、差集并存储到指定集合中
sinterstore destination key1 [key2]

sunionstore destination key1 [key2]

sdiffstore destination key1 [key2]
●将指定数据从原始集合中移动到目标集合中
smove source destination member

扩展操作较多,可以分为两大类,第一大类就是交并差集的计算,就是说假定你关注的有一个集合,你的朋友关注的有一个集合,这样就得到了相同的,不同的部分,然后在知道了差别后进行保存,指定一下保存到哪,最后一个就是移动这个操作,都是数据间进行交换的操作。

关于交并补做一个回顾,这就是交集

image.png

然后这是交并差集

image.png

接下来进行操作,先来两组数据 sadd u1 a1,sadd u1 s1,sadd u1 b1;sadd u2 s1,sadd u2 w1。先看第一类,sinter u1 u2,回车得到重叠部分,sunion u1 u2,两个加在一起的,并集,最后差就是sdiff u1 u2 跟 sdiff u2 u1 操作是不一样的,谁在前面谁去减掉。

第二类就是做了一个存储,interstore u3 u1 u2,就是把u1 u2加到一块得到u3,smembers u3得到u3,另外两个同理。

第三类移动就是把某个数据移动到某处,smove u2 u1 w1,得到的就是smembers u1,得到w1 a1 b1 s1,这就是移动指令的作用。

 

二、Tips9

redis 应用于同类信息的关联搜索,二度关联搜索,深度关联搜索

显示共同关注(一度)

显示共同好友(一度)

由用户A出发,获取到好友用户B的好友信息列表(一度)

由用户A出发,获取到好友用户B的购物清单列表(二度)

由用户A出发,获取到好友用户B的游戏充值列表(二度)

相关文章
|
2月前
|
SQL Oracle 关系型数据库
实时计算 Flink版操作报错之往GREENPLUM 6 写数据,用postgresql-42.2.9.jar 报 ON CONFLICT (uuid) DO UPDATE SET 语法有问题。怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
TypeError: Cannot set properties of undefined (setting ‘resdata‘),res定义数据出现的问题,定义的方法用this换成that
TypeError: Cannot set properties of undefined (setting ‘resdata‘),res定义数据出现的问题,定义的方法用this换成that
|
2天前
|
存储 语音技术 Python
语音识别,函数综合案例,黑马ATM,/t/t一个对不齐,用两个/t,数据容器入门,数据容器可以分为列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
语音识别,函数综合案例,黑马ATM,/t/t一个对不齐,用两个/t,数据容器入门,数据容器可以分为列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
|
10天前
|
存储 C++ 容器
【C++】学习笔记——map和set
【C++】学习笔记——map和set
9 0
|
2月前
|
存储 Java Redis
redis-学习笔记(Jedis set 简单命令)
redis-学习笔记(Jedis set 简单命令)
29 1
|
2月前
|
NoSQL Java Redis
redis-学习笔记(string , hash , list , set , zset 前置知识)
redis-学习笔记(string , hash , list , set , zset 前置知识)
13 0
redis-学习笔记(string , hash , list , set , zset 前置知识)
|
2月前
|
搜索推荐
redis-学习笔记(set)
redis-学习笔记(set)
25 0
|
2月前
|
SQL NoSQL Java
Redis数据类型 Hash Set Zset Bitmap HyperLogLog GEO
Redis数据类型 Hash Set Zset Bitmap HyperLogLog GEO
34 0
|
2月前
|
程序员 索引 Python
06-python数据容器-set(集合)入门基础操作
06-python数据容器-set(集合)入门基础操作
|
2月前
|
存储 C++ 容器
set容器一自定义数据类型指定排序规则讲解
set容器一自定义数据类型指定排序规则讲解
63 1