sanji 2017-02-14 10:36:05 7885次浏览 9条回复 10 2 0

seckill 秒杀系统

说明

环境

  • php5.6 + phpredis扩展
  • redis服务
  • apache2
  • mysql:table 商品表(goods) + 订单表(order)

工作流程

  1. 基于goods表中的库存,创建redis商品库存队列
  2. 客户端访问秒杀API
  3. 先从redis的商品库存队列中查询剩余库存
  4. redis队列中有剩余,则在mysql中创建订单,去库存,抢购成功
  5. redis队列中没有剩余,则提示库存不足,抢购失败

实现功能:

  1. 基于redis队列,可防止高并发的时候出现超卖BUG
  2. 基于redis队列比mysql的事务处理效率高

如果您想下载到本地运行:

  1. 修改 ./Seckill/Model/Model.php的mysql数据库链接信息
  2. 修改 ./Seckill/Redis/QRedis.php的redis数据库链接信息
  3. 修改 ./Seckill/buy.php
  4. 访问:http://host/index.php
  5. 访问规则:http://host/index.php?app=app&c=order&a=orderList&gid=1
github:https://github.com/sanjiOP/seckill/
觉得很赞
您需要登录后才可以回复。登录 | 立即注册