redis 红包 python_Python使用Redis进行接口限流(一)

说在前头

业务场景:一个id,限制每秒只能访问多少次。

为啥:可以防止别人乱刷接口,减少服务器的压力。

案例

1.发短信验证码

通常发短信之前就需要图形验证过后再发,如果有人抓包,用程序连续刷,就很危险了,所以得限流!一秒只能发一次,多余过滤掉。

2.提现金额(未经过审核情况)

我有个同事他们公司就是那样被盗刷红包。人家用程序,一秒内狂请求。或者狂点。数据库还没来得及更新,判断,就没人家撸走红包了。所以就得限流。

代码搞起

3e8c30a1-b861-42c9-9682-45b7e6fec9d8

使用Python操作redis,进行限流。

测试

 for _ in range(3): if act_limit(uid='1',action='/',max_count=1,period=1) is False: print('频率过快') else: print('正常')

输出的结果

正常

频率过快

频率过快

拓展

这样效率远远不够,下一节进行优化。使用lua脚本来限流。

说在最后

假如有帮助到你,或者你也是python爱好者,点赞,关注,转发。我会持续更新我日常在项目用到的工具,分享给大家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值