00:00
各位同学,我们继续接下来给大家介绍一下red有序集合the set,它也就是我们俗称的sort set。这两个名字啊,是12121的事,那么大家请看。这两个100%是不会有亲戚关系,兄弟关系,答案是明确的,那么大家都清楚set集合是无序无重复的,但有时候啊,我们的业务可能是需要对集合里面的这些value值进行一下从小到大,从大到小,或者按照某种维度从高到低,从低到高来进行排序,那说白了。可排序的set集合,自然而然z sat是会对set集合的一个有益补充和功能的扩展,来吧。它们两个有什么区别呢?来请大家看它的意思是z set是在set的基础时上每个value值前面加了一个score分数值啊,这个也就是我们可排序的一个维度参考值啊,那之前SK1有多个值啊,现在是z set t还是这个T,但是value变成了一对键值,对啊,只不过这个键值对是在这带着一个排序维度分数,那什么意思呢?那同学们请看啊,以前是sat对吧,然后呢,是K1 V1 V2 V3,我相信同学们没有任何问题,刚学完的现在是they set,看一,注意。
01:33
此时,这个value。稍微有点改变,明白吗?它这个里面会变成一个什么呢?过1V1这么说能跟上,相当于说这个value值和之前的一个区别在的一个原则,就是以前只有一个值啊,是什么就是什么,现在在这个值前面。有了一个分数来作为它的一个排序的参考,那Y6值啊从一变成了一个对值,你可以把它理为理解为一个带分数值的一个键值对,好,那么这个是它们俩的根本区别。那么接下来老规矩常用命令都给大家做了一下讲解和整理,那案例说话基操开工。
02:22
第一个,同学们请看。它的意思是向有序的集合中加入一个元素和该分数对应的分数值啊,来吧,那么同学们,我们呢,直接呢。给大家呢,做一下这个诶。不好意思,触摸一下这个屏幕。做一下对应的讲解,那么首先ZZS1请看。他这有这么多,这些最关键是分数门板,分数门板好吗?那么60分V1 70分V2 80分V390啊,我们后面搞多一点V4 100分的V5,那么从这我就还没减,你会想到一个什么问题,好同学们,This set,咱们先说它的其中的一个用法。
03:12
比如说啊。对某个游戏他目前的在线人数是多少?现在元神这个游戏目前在线的人数假设是70万,对吧?王者荣耀那么现在分别是多少?OK,那么请告诉我这个是不是可以对游戏排行榜来做一个限定值,按照登录人数或者投币人数或者点赞人数来做一个排序和查找啊?哎,说白了,排行榜。这种需求用z set来做是非常舒服和顺滑的一件事情。好,那么同学们讲到这儿了,咱们来继续这个they set句结构,大家请看是不是每个都带着一个好吧,那么接下来呢,The range,那么they set,大家请看。
04:02
老规矩,零到负一。说白了什么是不是把它的值全部变离出来,切记啊,这个才是主值啊,哎,只不过代表我这个值啊,前面又多了一个细节,相当于邮件带这个附件分数值,那这个时我们的全取和便利,那下面我想说我想带着分数来便利一下,那么大家请看V160分,V270分那么这个时候是不是值分数?值分数可以按照建制队给你统一遍例取出来。好,那么同学们请看啊,这个是z range积啥意思啊?按照元素分数从小到大,那么返回索引从start到stop之间的所有元素。那么这儿我们也说过了,一般我们零到负一是不是全部啊,OK,那么你可以取下标零到多少?这个有得你好,那么同学们我们来看一下啊,这是假设呢,我们只取零到二,OK,那么012不说了吧,好,那继续,这个是顺序,这个rev是啥意思啊,是不是代表反转的意思呀?好,同学们请看一眼啊,假设。
05:05
这零到负一,这是我的全部,那么z re range z range,积,那么ZS,零到负一伴随着我们的分数,同学们请看。下面这个是不是从一到五,下面这个反转是不是从五到一,从大到小,从大从小到大,告诉我这个是不是我们set集合进行一个有序的排序,按照你的业务规则,好,这是我们的第一组,那么接下接下来这个单独拿下来,稍微有点复杂,它是they range by什么school,但可能有有时候啊,比如说我关心的不是这个值哦。我关心的是个数字,那么就看你的业务维度,它的意思是你看z range按照什么,它的维度是关心前面这个分数,那么有K最小最大等等等等,那么来吧,它是这样的。
06:00
我们按照我们的案例来写啊。还是要代码说话,首先给我选出60分到90分的,那这个时候啊,Z range,然后呢,By school z sat,大家请看最小和最大,然后的话我们来看一下现在我们的分数是60分到100分啊,现在杨哥呢,62~92,同学们请看我现在呢,是不是就以分数来说话,按照分数来筛选出V1和V2这四个值没问题吧,那么接下来。来伴随着我们的school。来都有了吧,从分数来取值,从值来取分数一样好,接下来在这它有一个什么。小括号,那这个小括号什么意思呢?请看不包含OK,那我们什么都没说的意思就是大于等于60啊,小于等于90,这么说清楚了吧,那现在假如说杨哥你在这个前面加了个小括号。
07:07
这啥意思啊,那是不是变成不包含60的,那也就是大于60小于等于90的,那么同学们请看是不是只有70啊,80啊,90啊,OK,来继续。还有一个limit,那这个limit的意思是什么概念呢?那是不是也就是按照。我们的作用限制返回啊,那么开始下标步走多少步,那么我们也就不再废话了,那么假设啊,Limit,那么大家呢,请看一下,这个时候假设我们从零开始走一步,那么答案就选一个,那么假设从零开始,你想走两步就走两个值给你返回,是不是有点像MYSQ的分页呀?OK,好,那么对于它我们就介绍到这对于。这两三个命令啊,正着取反着取,按分数取非常重要,请同学们练习一下啊,以后你在你你要是做一个排行榜的功能,这三个是用得到的,好接下来。
08:08
简单的啊,我们呢,直接过到这儿。这个呢是代表SZ啥意思啊,Z set1,那么假如说啊获取元素的分数,那么假设V5是100分,那么具体查询一下你是多少就是多少,这个呢也不难,好按照获取对应元素的分数也是value值,它前面这个分数,下面z card1说。那么z sat1现在有几个?是不是五个60分到100分总共五个值好的,那么接下来再来看下面的问题,是删除对应的元素啊,Z remove,那么z set,大家请看我们应该删多少?注意啊,这个member。可不是分数啊,现在要删的是V5,注意它这是某个分数下对应的value啊,这个member是主要是这个value值,前面那个分数是它的补充啊,所以说同学们请看这个时候删干净了吧,那么我再来删,没有了,啥情况z range积,我是不是把满分100分的这个小哥哥零到负一那么位。
09:22
给它删掉满分的这个,把它删掉,那么现在是不是就是只剩下四个值了,OK,好,那么接下来they increase by,那这个是啥意思啊,是不是增加某个元素的分数啊,那现在我们都是60 70 80 90,好z increase by,那么这个呢,在子称类型也前面也介绍过,对吧?一说你也会懂,那么下面大家请看我加个几分啊,比如说我就加个三分,你对谁加呀?我对这个V1这个值,V1这个值默认是不是60啊,加了三分以后是不是就63分了?OK,那么同学们,那么又回到我们的range积是不是V1变63分?OK,好了,接下来继续。
10:00
They can't,那么z set1,大家请看获得指定分数范围内的元素个数,那假设现在兄弟们我们从60分到100分有几个值啊,有四个值啊,那假设我们从60分,那假设我们从65分到70分有几个值啊,只有一个对吧?因为刚才那个是63嘛,对不对,那么这个呢,是一个看一个统计。再来zm popp,从建明列表中的第一个非空排序集当中弹出一个或者是多个元素,它们是成员分数,对,哇,那么来同学们,我也提前给大家做好了,这是几7.0的一个新命令,这个还是有用来它的意思是这样的,同学们请听杨哥拆解,我这做了一个,一是万,二是two,三是岁,好吧。打印一下禁止对,那么现在zm pop你要弹出去几个啊。一个,那么从哪一个T里面,从这个T里面那么来吧,我们呢,直接呢,最小的一个。
11:05
过来,那么大家请看是不是得到哪个K,这个K里面弹出了几万和一,这个时候是不是我们最小的,我们再来查看一下,大家看。一是不是被弹出去了,OK,这个能看得懂吧,那么好,我们给大家呢,进行一下简单的实操,那么接下来啊,就是ZN,那么我现在是key number几个,就一个K,哪个k z set1你要干嘛?最小的COUNT1给我弹出去。好,那么同学们请看这是不是没有啊啊,我们是不是有一个小小的语法错误,那么来吧,Z pop1 they set一看一,同学们请看,这个时候我们会得到一个效果,是不是把这个键值对最小的那个V1 63号这个值。弹出站了,OK,好,那么这个是我们的一个什么ZM,那接下来大家请看。
12:02
The rank k。和value的值,它的作用是获得下标,那么这个rev相当于说是什么?是逆序获得下标值,那么同学们,我们来看一眼啊,现在they range,假设z sat1,零到负一,那么大家请看现在有几个值啊?012好吗?那么znk z rank z set1这个里面请告诉我VR这个值是多少啊?那么是不是应该下边是零啊?那么下面z re为rank z s1,现在你再告诉我VR这个值是多少,是不是变成2012,那么如果是rev就是倒着上来,那么就是012,那么所以说如果正序它的下标值就是从零开始返回零,如果逆序它的下标值就是从下面开始,那么它就变成了012,它的下标值就变成了二,OK,所以说也很好理解正序下标和逆序下标好,那么上面这就是我们常见和常用的z set排序结果集的一个。
13:09
基操和基础常用命令,同学们先来练习一下老规矩。面试会问你,请问一下你对于ready的排序结果集了解吗?说出五个常用命令用在哪啊?你在工作中怎么用的?那么同学们请看我们这儿是不是可以根据商品的销售对商品进行排序?哥哥请告诉我今天热销啊,比如说热销的商品对吧,热销的主播,那么他们比如说这个商品卖了多少啊,这个主播分别是谁啊,那么这个时候打打赏。那这个时候同学们请看一眼。假如说啊,我们来统计一下打赏的。榜一到榜五大哥分别是哪几位?那么假设V1就是张三,V2就是李四,他们分别打赏了200万,100万,那么这个时候我们用Z赛按照分数做个排序,就是他们的点击率,点赞数,销售数额,打赏金额等等等等,那么告诉我这个是不是就是一种?
14:22
实时的排序功能的分解步骤啊哎,所以说呢,我们在这儿就以一个根据商品的销售对商品进行排序来进行显示,那么都给大家做了命令的案例,这些呢,我们都敲过,我就不再重复啰嗦,下面定义商品的销售排行榜,那么我们用z set t假设就叫这一个啊,叫商品的销售分数,商品的销售排序分数呢,就是商品的销售数量,那么同学们请看啊,商品编号1001,这个商品假设呢?卖了九个1002,这个商品卖了15个啊,初十的话,那么现在我们来统计,当然我这儿只是举个例子,有两个商品,你可以有前十个热销的商品分别数字是多少。
15:06
好,精品爆款,我们ZADD,这个就是我们的销售商品销售排行榜对吧?这个T下面给我取十个,那么当然这杨哥这只写了两个,那假设客户又买了两件1001商品,那么是不是用z in可二,那这个时候告诉我是不是这个1001他的数字就从九变成了11,那接下来求商品的前十名,比如说每一分钟我去刷新一下ready。大家在买的过程当中,那么肯定这个商品的销售热销版是变化的,那每一分钟或者每三分钟我们去刷新一次,我们得到这个榜一,榜二,榜三,那么最终我们大家看,只要你销售了,我就把这个商品的销售数字或者点赞数或者打赏数做一下更新,是多少就是多少,那最后我们z range按照分数来统计一下,那么得到1001商品卖了十余个,1002这个商品卖了15个,那么不管是正序和逆序,或者你想怎么统计,都可以获得我们对应的排行榜展现,OK,好,那么同学们,这个就是我们可排序的z set相关的基础命令和应用落地场景介绍,好,那么this set就给大家介绍到这。
我来说两句