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

目录

Redis实现限时抢购

MD5加密请求防止刷单

单用户限制频率


 

Redis实现限时抢购

 

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

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

set kill1 1 EX 10

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

如何设计一个秒杀系统(三)_第1张图片

 

 

 

 MD5加密请求防止刷单

 

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

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

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

 

 

单用户限制频率

 

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

如何设计一个秒杀系统(三)_第2张图片 

代码示例

如何设计一个秒杀系统(三)_第3张图片 

你可能感兴趣的:([电商项目],[SpringBoot])