1 在PHP下直接安装Redis扩展
2 连接Redis
$db=new \Redis();
$db->connect(127.0.0.1,6379);
本次使用UT开发框架,连接忽略。
创建表 kucun 字段nums int
创建表 log 字段uid int,字段logtime datetime
3 实测代码
//表kucun,字段nums int
//表log,字段uid int/logtime datetime
use library\UsualToolInc\UTInc;
use library\UsualToolRedis\UTRedis;
use library\UsualToolData\UTData;
$redis=UTRedis::GetRedis();
$redis->watch('sale');//监测锁
$sale=$redis->get('sale');
//库存
$n=UTData::QueryData("kucun","","id=1")["querydata"][0]["nums"];
if($sale>=$n){
//更新库存为0
UTData::UpdateData("kucun",array("nums"=>0),"id=1");
UTInc::GoUrl('-1','库存清零');
}
//开启事务
$redis->multi();
$redis->incr('sale');//自增售卖数量
$res=$redis->exec();
if($res){
//增加销售记录
$uid=UTInc::GetRandomString(8);
UTData::InsertData("log",array("uid"=>$uid,"logtime"=>date('Y-m-d H:i:s',time())));
echo "下单成功";
}else{
UTInc::GoUrl('-1','下单失败');
}
以上代码高并发压测下通过。
|