2020/04/17 07-集合、有序集合操作和实例

在这里插入图片描述
列表,位图,string,哈希就是字典套字典,help hash这样所有的命令都可以看

set现在依然是kv,v换成set,就是一个嵌套结构,元素是add,添加进去,一个key,里面value部分,setl里叫成员,member,也就是可以加很多member。
是一个无序的去重的

在这里插入图片描述
元素可以认为就一种类型,所有的复合结构里面真正存的是就一种类型,这个类型就是字符串

在这里插入图片描述
card就是基数,在统计里非常重要,等于在select的时候用到的distinct,基数就是指的是有一大堆样本,去重之后还有多少个个体,不用lens就是因为set天生去重
在这里插入图片描述
对于在python里的容器类型,知道它们长度是不需要遍历的,都给你存好了
在这里插入图片描述

这里的元素应该用这种方式去看
在这里插入图片描述
这个就是python里的in操作,这种操作对于set效率还是比较高的,列表是链表,要从头到尾走一遍,set的in操作效率还是比较高的
在这里插入图片描述
两个set集合,看起来一样,但是未必顺序就一样

在这里插入图片描述
这个顺序,跟我们录入的顺序一样

在这里插入图片描述
再加一个,这两个其实有时候会不一样,看演示的时候的情况,告诉我们即时两个元素完全相同的,从smembers看,不能保证里面顺序是否一致。
这个输出之后是有顺序的,但是不敢保证每次列出的顺序是一致的

在这里插入图片描述

f1有5个元素,srandmember 这样是随机取元素
在这里插入图片描述
只有5个,就算要6个也只有5个
在这里插入图片描述
在这里插入图片描述
没有就随机重复拿几个

在这里插入图片描述
正向10个,还是有几个拿几个,-10就可以重复拿,正数和负数的绝对值小于等于它的长度,尽量给你不重复去拿,超过长度就不一样了,反向的会给你重复去拿,正向的不会

在这里插入图片描述
在这里插入图片描述
pop就是随机弹出一个,链表的pop是左边弹出还是右边弹出,是有头和尾的
在这里插入图片描述
SMOVE,是从源到目标移动的元素
在这里插入图片描述
在这里插入图片描述

集合运算

算差集sdiff,sdiffstore 算差集,同时把结果存储在目标key中
在这里插入图片描述
这两个集合求差集,得出来的结果是,789

在这里插入图片描述
交集部分
在这里插入图片描述
得到的结果正好是123 456
在这里插入图片描述
并集是所有集合的并集

在这里插入图片描述
123 456 789 999
在这里插入图片描述
当用户访问另一个用户的时候,会显示两个用户共同关注哪些相同的用户,应该用交集

在这里插入图片描述
这样取交集就是共同的好友,其实你登录显示的好友已经放在redis中了
在这里插入图片描述
放在redis里就这么放,比如101号用户,多少好友,这两个取交集即可

在这里插入图片描述

有序集合SortedSet

想办法给个数值就可以排序了,我们把这个数值叫得分,首先需要是个set,只不过里面的元素需要关联一个浮点数的值,这个值称为score得分,会按照分支,由小到大,默认应该是升序的,排列所有的元素。分值可以相同,会默认按照ascii码字符排序来解决排序问题

在这里插入图片描述
这个分支可以当做商品的贵贱来排

在这里插入图片描述
员工的薪水也可以作为排序

在这里插入图片描述
在这里插入图片描述
有的前缀都是z开头的
在这里插入图片描述
set用s,l是列表,最简单都是留给字符串的,hash是h开头

在这里插入图片描述

基数,就是返回不同元素个数
在这里插入图片描述
Zcount 指的是这个key,用这个分值来取最大值和最小值区间

在这里插入图片描述
比如价格在三块钱,到5块钱之间的水果列出来,只不过求的是数值
在这里插入图片描述
zscore就是把你给的成员的分值打印一下

在这里插入图片描述
分值就可以增长和减少,increment这个值写成负数就是减分
在这里插入图片描述
range就是区间,Zrange指的是返回指定索引区间的元素,它排序就用索引,有序才能用索引,set没法索引,因为是无序,有序set就有序了,有序就可以用这样个区间去访问,访问的时候是带key的,后面加withscore这样一个参数,告诉它带所有的参数

在这里插入图片描述
但是有一些分值是一样的,比如好几个人月薪一样,按照字典序进行排序,因为默认升序,字典序也是升序来排的,默认按照score从小到大排,从大到小,就选择zrevrange,这样一般是分值一样,谁在前谁在后的问题了
在这里插入图片描述

这两个是相反顺序
在这里插入图片描述
返回元素的排名,rank就是排名的意思,返回这个member排第几
在这里插入图片描述
zrevrank,告诉你这个menber反转之后排第几,其实就是索引
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分值区间,range指的是索引区间,所以不能这么写
在这里插入图片描述
这里是从0开始,默认是升序,0-1是david在前
在这里插入图片描述
如果要薪水前10名,用reverse版本,就是降序排,withscores还可以带上分数

在这里插入图片描述
range就是按照你给定的索引位置来得到

还可以在分数上增加减少

在这里插入图片描述
倒排取前几名很有用,带不带分值由你决定
在这里插入图片描述
告诉你当前的排名
在这里插入图片描述
第4,索引正好是3

在这里插入图片描述
正好给了一个score区间

在这里插入图片描述
这里默认还是升序
在这里插入图片描述
这里也有reverse版本
在这里插入图片描述
这个还可以用偏移
在这里插入图片描述
limit是返回几个,offset是偏移几个,help查看如何写
在这里插入图片描述
其实offset可以直接这么写,偏移掉一个,一般拿到分值就带上withscores
在这里插入图片描述
其实往往用的都是倒排而不是正排

加了括号就不是闭区间了,3500就不出现了

在这里插入图片描述
一般就只能在前面加括号,这是加括号可以改变边界
在这里插入图片描述
正无穷和负无穷
在这里插入图片描述
在这里插入图片描述
zrem是移除元素,元素没了,带的分值也没了,元素不存在就忽略掉
在这里插入图片描述
可以指定排名也就是索引范围
在这里插入图片描述
指定分值范围移除
在这里插入图片描述
在这里插入图片描述
现在的集合运算带上了一个分数,带上分值,集合运算就发生了一些变化

在这里插入图片描述
一定要有目标

在这里插入图片描述
求并集有一个目标(求好的并集存这里),numkeys就是指key的数量(比如后面要求并集的有两个,就写个2,然后写 看key1 key2)

在这里插入图片描述
weights 权重可有可无,有了几个key,就写几个权重,每个权重都是分别给他们配的
在这里插入图片描述
aggregate采用什么方式的聚合运算,求最大值,还是最小值
在这里插入图片描述
现在有考试成绩

在这里插入图片描述
在这里插入图片描述
求聚合运算

在这里插入图片描述
这两个一模一样
在这里插入图片描述
zrange,从哪到哪,拿到基数就知道整个长度,然后带上分数
在这里插入图片描述
配一个权重
在这里插入图片描述
125,,30

在这里插入图片描述
也就是这里是分别配权重,真的要做聚合运算,每个都要加权重才比较科学,(不然就是日元直接+美元,不科学)
在这里插入图片描述
交集也是类似,几乎一模一样
在这里插入图片描述
这些需要参考数据做综合的处理

在这里插入图片描述
榜单到最后其实就是top n的问题,看网络的点击量,还有CD,大部分情况下用音乐ID作为唯一标识

在这里插入图片描述
python的redis库2.0的语法和3.0的有点区别,
显示所有的点击量都是为1 ,后面点击量上去了,这些点击量就增加到数据上了

在这里插入图片描述

在这里插入图片描述
升序,从小到大,按照score来排

在这里插入图片描述
排行榜是倒着取,取分值0-9,正好10个,拿到排行榜就哭打印了,true就是withscore,打印出来就有音乐名称和分数
在这里插入图片描述

3。0库怎么写

前面加key,后面写字典
在这里插入图片描述

下面的语法两个换了地方
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
时间戳是由小到大的,想看最后10条,就倒排时间戳就拿到了,有些网站的评论是异步的方式,先让你的评论显示在那里,但是其实刷新一下就没了,后面慢慢入库,但是把评论到redis里,就可以一直看,redis里的数据隔一段时间慢慢入库就行了
在这里插入图片描述
取多少条到多少条,反正是按时间戳排序,跟分页一个道理
在这里插入图片描述

在这里插入图片描述

**排行榜,一般排行榜可能用销售量来决定的 **
在这里插入图片描述
在这里插入图片描述
01代表第一天,02第二天,java的书买了1000本,redis2000本,第二天和第三天也是如此来做,这样求销售前10名
在这里插入图片描述
对这三个求并集,得出一个新的键存下来,求并集的意思是前三个相同的key做求sum,但是这里的值是累计值
在这里插入图片描述
既然是累计值,最后一天就是要统计的表单,最后一条的总是累计下来的最大值都在最后一条
在这里插入图片描述
所以要选max,然后最后出来的数据倒排一下

在这里插入图片描述
如果多个集合求并集之后,会生成一个巨大集合,要思考下内存是否够,大集合运算最怕内存耗尽
在这里插入图片描述
如果是统计的每天的销售绑定,那么只要求和就可以了,最后聚合运算求sum,最后倒排一下榜单就产生了在这里插入图片描述

发布了243 篇原创文章 · 获赞 6 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_42227818/article/details/105584987