数据类型-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的游戏充值列表(二度)

相关文章
|
3月前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。HashSet基于哈希表实现,提供高效的元素操作;TreeSet则通过红黑树实现元素的自然排序,适合需要有序访问的场景。本文通过示例代码详细介绍了两者的特性和应用场景。
57 6
|
4月前
|
数据采集 存储 监控
网络爬虫的最佳实践:结合 set_time_limit() 与 setTrafficLimit() 抓取云盘数据
本文探讨了如何利用 PHP 的 `set_time_limit()` 与爬虫工具的 `setTrafficLimit()` 方法,结合多线程和代理 IP 技术,高效稳定地抓取百度云盘的公开资源。通过设置脚本执行时间和流量限制,使用多线程提高抓取效率,并通过代理 IP 防止 IP 封禁,确保长时间稳定运行。文章还提供了示例代码,展示了如何具体实现这一过程,并加入了数据分类统计功能以监控抓取效果。
77 16
网络爬虫的最佳实践:结合 set_time_limit() 与 setTrafficLimit() 抓取云盘数据
|
3月前
|
Java
Java Set以其“不重复”的特性,为我们提供了一个高效、简洁的处理唯一性约束数据的方式。
【10月更文挑战第16天】在Java编程中,Set接口确保集合中没有重复元素,每个元素都是独一无二的。HashSet基于哈希表实现,提供高效的添加、删除和查找操作;TreeSet则基于红黑树实现,不仅去重还能自动排序。通过这两个实现类,我们可以轻松处理需要唯一性约束的数据,提升代码质量和效率。
45 2
|
3月前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其独特的“不重复性”要求,彻底改变了处理唯一性约束数据的方式。
【10月更文挑战第14天】从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其独特的“不重复性”要求,彻底改变了处理唯一性约束数据的方式。本文深入探讨Set的核心理念,并通过示例代码展示了HashSet和TreeSet的特点和应用场景。
25 2
|
4月前
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
|
5月前
|
存储 NoSQL 算法
Redis6入门到实战------ 三、常用五大数据类型(列表(List)、集合(Set)、哈希(Hash)、Zset(sorted set))
这是关于Redis 6入门到实战的文章,具体内容涉及Redis的五大数据类型:列表(List)、集合(Set)、哈希(Hash)、有序集合(Zset(sorted set))。文章详细介绍了这些数据类型的特点、常用命令以及它们背后的数据结构。如果您有任何关于Redis的具体问题或需要进一步的帮助,请随时告诉我。
|
6月前
|
NoSQL Redis
Redis set数据类型命令使用及应用场景使用总结
Redis set数据类型命令使用及应用场景使用总结
55 1
|
5月前
|
测试技术 索引 Python
Python接口自动化测试框架(基础篇)-- 常用数据类型list&set()
本文介绍了Python中list和set两种数据类型的使用,包括它们的创建、取值、增删改查操作、排序以及内置函数的使用,还探讨了list的比较函数和set的快速去重功能。
40 0
|
6月前
|
消息中间件 JSON NoSQL
Redis深度解析:核心数据类型之hash、list、set
Redis深度解析:核心数据类型之hash、list、set
TypeError: Cannot set properties of undefined (setting ‘resdata‘),res定义数据出现的问题,定义的方法用this换成that
TypeError: Cannot set properties of undefined (setting ‘resdata‘),res定义数据出现的问题,定义的方法用this换成that