前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >2020-10-29:使用redis实现分布式限流组件...

2020-10-29:使用redis实现分布式限流组件...

原创
作者头像
福大大架构师每日一题
修改2020-10-30 10:03:46
修改2020-10-30 10:03:46
3770
举报
文章被收录于专栏:福大大架构师每日一题

2020-10-29:使用redis实现分布式限流组件,要求高并发场景同一IP一分钟内只能访问100次,超过限制返回异常,写出实现思路或伪代码均可。

福哥答案2020-10-29:

简单回答:

固定窗口:string。key存ip,value存次数。

滑动窗口:list。key存ip,value=list,存每次访问的时间。

中级回答:

固定窗口:用redis的string进行存储,IP为key,value用自增的方法进行设置值,每次设置完了返回值就是自增后的值,如果为100了就限制范围。给这个设置一个超时时间为1分钟,一分钟后该key会自动消失。

优点是性能好,实现简单,耗内存少。

缺点是第一个请求在0s到达,剩下99在60s,然后61s来了100个请求,也就是60-61s有199个请求来了,并不是严格的任一请求任一分钟都是100次的限制。。

滑动窗口:key 存ip ,value=list,list存的是每次访问的时间戳,每次访问查询list数据,拿前第100个的数据跟当前时间戳比较。

优点是时间控制相对精确。

缺点是性能没那么好,实现相对复杂,耗内存多。


评论里有解决方案

2020-10-29:使用redis实现分布式限流组件,要求高并发场景同一IP一分钟内只,如何回答呢?

2020-10-29:使用redis实现分布式限流组件,要求高并发场景同一IP一分钟内只能访问100次,超过限制返回异常,写出实现思路或伪代码均可。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档