简单秒杀系统中的限制单个用户访问次数
为什么要限制用户访问次数?
限制流程
用户在进行了令牌桶算法限流之后,首先判断该用户是否超过了访问次数,从redis里获取设置了期限的key的访问次数,如果超过了则直接返回用户信息购买失败,超过频率限制,否则在redis里再增加一次访问次数,重新设置redis中的key对应的过期时间,然后调用秒杀业务,再在秒杀业务里判断是否商品超过了秒杀时间,再判断用户是否能进行秒杀,如果能进行,为用户生成订单id【注意,不是用户秒杀成功一次算是访问了一次,而是用户点击一下app的秒杀按钮就算是访问了一次,所以不能在用户秒杀成功后再加用户的访问次数,而是应该只要访问,不管成不成功都要加1次】
实现过程
controller.java
service.java【无进行秒杀的service层代码,和上一篇相同,只有获取用户访问次数以及判断用户是否超过了限制访问次数的代码】
结果