PHPphpPHP建站

thinkphp5.0 - Redis 实现秒杀

2018-01-27  本文已影响670人  墨丘利lh

首先,因为秒杀这个环节在商城项目中比较常见,最近写商城项目,碰到这个功能模块,于是就拿出来给大家分享一波。

难点:高并发的情况下,正常逻辑写的话数据库的库存会出现负数,对付这类问题有很多解决方案,我就不一一赘述,我这次用的是redis的队列机制。

话不多说,进入正题

三张表做测试,分别是:商品表,日志表,订单表,

goods,log,order

秒杀的入口:

采用队列的方式加入库存

本次采用ab压力测试:

-r 指定接收到错误信息时不退出程序

-t 等待响应的最大时间

-n 指定压力测试总共的执行次数

-c 用于指定压力测试的并发数

进入apache的bin目录  cmd输入下列分代码

E:\phpstudy\Apache\bin>ab -r -t 60 -n 3000 -c 600 http://127.0.0.1/api/kill/index/id/1

结果

数据库

库存count并没有出现负数 订单表确实只有50个订单

至此秒杀的功能基本实现  后续再去对其加工,欢迎大佬们提出宝贵的意见

上一篇下一篇

猜你喜欢

热点阅读