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

Posted stillstep

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了秒杀思路: yii2加Redis实现秒杀相关的知识,希望对你有一定的参考价值。

整理一些思路  

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

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

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

 

以上是关于秒杀思路: yii2加Redis实现秒杀的主要内容,如果未能解决你的问题,请参考以下文章

redis watch 加 事务实现秒杀

php+redis实现电商秒杀功能

用Redis轻松实现秒杀系统

基于redis分布式锁实现“秒杀”

基于redis分布式锁实现“秒杀”

教你如何用 Redis 轻松实现秒杀系统的构思