如何设计一个秒杀系统(三)

目录

Redis实现限时抢购

MD5加密请求防止刷单

单用户限制频率


 

Redis实现限时抢购

 

秒杀功能要在指定时限内才有效对吧,这里我们借助Redis。把商品id作为key值放到redis中,可以设置10s过期。 对10s外的过期请求进行拒绝处理!

这里我在redis中存入一个值,key为kill1,value为商品的id由数据库可知该商品的id为1,设置10s过期 

set kill1 1 EX 10

下面改造service,service在校验库存之前要先进行判断是否在时限呢,否则不能抢购

 

 

 

 MD5加密请求防止刷单

 

如果有人做了一个刷单小程序,当检测到秒杀开始就不断刷单,这样肯定会比吃瓜群众秒杀成功的几率高。这种不公平的现象怎么避免呢?

这个有人用了MD5加密算法,意思是每次下单都要比对随机生成的MD5加密算法。言外之意,一个人最多可以抢一次。但我暂时想不通的是,做了一个爬虫程序,使用时需要登录秒杀软件的用户名和密码,让他自动监控秒杀。秒杀开始即请求,这样机器的秒杀也会生成一个MD5。MD5防止了机器多次抢购,但还是防止不了机器自动抢购比吃瓜群众手动抢购更快呀~。

抱着这个疑惑,MD5加密的实现这里就不展开了。

 

 

单用户限制频率

 

我们可以在一定程度上降低刷单程序的作用,核心逻辑是走一个判断,如果用户1秒内请求了10次以上即判定此用户刷单,可以禁止该用户的后续抢购操作,也可以限制该用户之后的抢购操作只能点击1次。~

 

代码示例

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值