秒杀系统 防止超卖 防止同一用户多次下单 提高qps

秒杀系统要解决的问题:
1、防止超卖
2、防止同一用户多次下单
2、提高qps

秒杀基本步骤:
1、判断商品是否不足
2、判断同一用户多次下单
3、更新库存
4、生成订单

防止超卖

1、更新库存的sql 加上判断库存大于0的where

防止同一用户多次下单

1、秒杀订单加上 (商品,用户)的唯一索引

提高qps

1、页面静态化,后端只返回必要的数据,而不是整个页面。前后端分离就达到了页面静态化的效果。减少后端的数据传输量,提高响应速度。
2、预先将秒杀商品的库存放入redis,用户下单在redis中预减库存,这比从数据库中读取库存要快得多。加速库存不足的判断。
3、用户下单成功后,将(用户,商品)存入redis。加速同一用户多次下单的判断
4、单机内存标记。每个机子有个 商品id映射到库存是否不足的map,减少访问redis来判断库存是否不足。必要的话可以每个机子有个 (用户+商品)映射到是否已购买的map,减少访问redis来判断用户是否多次下单。
4、redis预减库存后,生产消息放入消息队列,立即返回。利用消息中间件将更新库存、下订单的操作脱离出去,变为异步执行。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值