【Redis从入门到放弃系列 五】数据结构综合应用场景及总结

上一篇的2万字长文【Redis从入门到放弃系列 四】数据结构应用场景后,其实对Redis的五种数据结构整体有了一个认知,对于其详细的应用场景也加深了理解,本篇再次综合性的使用这几种场景探讨下它的使用场合。

限时限次结算的服务控制

在这里插入图片描述

按此结算的服务限制需要限制:每分钟最多调用10次

在这里插入图片描述
选定类型:string,选定命令 setex , 设定redis的生命周期,每次incr后get一次,到10次的时候禁止调用,并且生命周期到期后清空值。

在这里插入图片描述
操作同理,但是可以设置数字的最大值,利用超过报异常来避免每次get操作

微信接收消息顺序通知

在这里插入图片描述
需要区分置顶用户和普通用户,并且后来的消息在最上边,先看到【按栈模型使用】
在这里插入图片描述
选定类型:list、set,选定命令 消息来了之后先和set比较是否为置顶用户然后加入不同的list,并且后来的list较新展示

在这里插入图片描述

如果需要做计数,再对相同的消息设备同步使用一个计数redis去实现。当然这里使用sorted_set也可以,用时间作为排行榜得分。

到这里,用三篇的篇幅对Redis的数据结构进行了一个详细的学习和介绍,感觉它的用处还是非常大的,最后总结一下各类数据结构他们的性能和特点吧,方便之后用的时候好记忆:

数据类型特点查询性能插入、删除性能适用场景
string性能高O(1)【多指令时为O(N)】O(1)【多指令时为O(N)】计数器、分布式自增主键、按时按次服务计算、热点数据刷新、时效性投票系统
hash结构性O(1)【同时设置多字段时为O(N)】O(1)【同时设置多字段时为O(N)】购物车操作、抢购系统
list顺序性O(n)O(1)社交点赞、任务队列、分布式日志顺序显示
set不重复性O(1)【多值操作时为O(N)】O(1)【多值操作时为O(N)】黑白名单、推荐系统、业务系统权限整合、UV\IP数据统计
sorted_set不重复排行榜O(1)O(log(n))合并排行榜、带权重的任务队列、vip超时队列【时间作为得分】

总体而言,redis的设计就是简单、快,时间复杂度最多不超过O(N),并且设计了多种有特色的数据结构,利用这些数据结构服务现有的业务场景。

时间复杂度部分来源于 https://blog.csdn.net/zzm848166546/article/details/80360665,深度好文

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值