开发者学堂课程【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
扩展操作较多,可以分为两大类,第一大类就是交并差集的计算,就是说假定你关注的有一个集合,你的朋友关注的有一个集合,这样就得到了相同的,不同的部分,然后在知道了差别后进行保存,指定一下保存到哪,最后一个就是移动这个操作,都是数据间进行交换的操作。
关于交并补做一个回顾,这就是交集
然后这是交并差集
接下来进行操作,先来两组数据 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的游戏充值列表(二度)