码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-06-20 09:34:37      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:margin   提示   读取   数据   数据库   下单   控制   大于   冲突   

整理一些思路  

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

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

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

 

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

标签:margin   提示   读取   数据   数据库   下单   控制   大于   冲突   

原文地址:https://www.cnblogs.com/stillstep/p/11056479.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!