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

整理一些思路  

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

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

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

猜你喜欢

转载自www.cnblogs.com/stillstep/p/11056479.html
今日推荐