秒杀思路: yii2加Redis实现秒杀

整理一些思路  

  • PHP7, yii2加Redis怎么实现秒杀
  1. 一个list列表存放秒杀的商品
  2. 一个list列表存放秒杀的客户信息

首先读取秒杀商品到商品列表, 然后等待客户秒杀. 

    1. 每次客户请求,
      1. 检查用户列表与商品数量是否大于等于. 如果是就提示已经抢完.下次再来. (这里可以选择方案 是用户下单就减少还是付款再减少)
      2. 检查商品的剩余数量是否大于0, 是就减一,并加入客户到列表里面. 否就提示已经抢完.下次再来. (这里可以选择方案 是用户下单就减少还是付款再减少)
      3. 每次客户请求, 加入客户到列表里面. 等待付款. 付款时检查??检查商品的剩余数量是否大于0, 是就减一,否就提示已经抢完.下次再来.
      4. (上面的集中方法也是有问题, 如果高并发 还是会有可能同时读取和写入的冲突情况, 可以考虑加锁, 加事务, 特别是更新数量进行减一的时候要带着上次查询出来的库存数量, 但是不加锁的话也可能高并发时同时请求操作.)
      5. 还有一种方案, 是直接在数据库用数据版本, 加一个version字段, 每次写入时作为条件.  如果版本不对, 可以用while控制重新操作几次请求, 也可以让用户再次提交.

 

转载于:https://www.cnblogs.com/stillstep/p/11056479.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值