PHP+Redis实现高并发

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','下单失败');
  }

以上代码高并发压测下通过。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~黄豆~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值