基于PHP+redis的秒杀系统 [ 技术分享 ]
seckill 秒杀系统
说明
- PHP原生代码编写,没有基于框架,主要让用户了解秒杀原理。
- github:https://github.com/sanjiOP/seckill/
环境
- php5.6 + phpredis扩展
- redis服务
- apache2
- mysql:table 商品表(goods) + 订单表(order)
工作流程
- 基于goods表中的库存,创建redis商品库存队列
- 客户端访问秒杀API
- 先从redis的商品库存队列中查询剩余库存
- redis队列中有剩余,则在mysql中创建订单,去库存,抢购成功
- redis队列中没有剩余,则提示库存不足,抢购失败
实现功能:
- 基于redis队列,可防止高并发的时候出现超卖BUG
- 基于redis队列比mysql的事务处理效率高
如果您想下载到本地运行:
- 修改 ./Seckill/Model/Model.php的mysql数据库链接信息
- 修改 ./Seckill/Redis/QRedis.php的redis数据库链接信息
- 修改 ./Seckill/buy.php
- 访问:
http://host/index.php
- 访问规则:
http://host/index.php?app=app&c=order&a=orderList&gid=1
github:https://github.com/sanjiOP/seckill/
共 9 条回复
sanji
注册时间:2017-02-14
最后登录:2019-03-05
在线时长:13小时17分
最后登录:2019-03-05
在线时长:13小时17分
- 粉丝4
- 金钱75
- 威望0
- 积分205