php redis 秒杀demo

$redis = new Redis();
$redis->connect("127.0.0.1", "6379");

$redis->select(1);
//抢购成功列表
//var_dump($redis->lrange("miaosha",0,100));die;
$redis->flushdb();

//第一步,先加商品库存加入列
//设置库存数量
$goods_number =100;
//将100件商品存入redis列表中
for($i=0;$i < $goods_number; $i++ ){
  //lpush从列表的头部添加元素
  $redis->lPush("goods_store",1);
}
//返回列表的goods_store的长度
echo  $redis->lLen("goods_store")."<br/>";

//第二步,抢购开始,设置库存的缓存周期(s)
//设定一个key的活动周期s
$redis->setTimeout("goods_store",60);

//第三步,下单,下单前判断redis队列库存量
//从列表的头部删除一个元素,返回删除的元素
$n = 0;        //验证
$i = 1000;    //模拟多少人
while ($i--)
{
  $n++;
  //用户随机
  $uid = mt_rand(1, 999999);

$counts_good=$redis->lPop("goods_store");
if (!$counts_good )
{
  echo "用户:".$uid."秒杀失败";
}
//下单
//设置秒杀成功队列
   $redis_name = "miaosha";
  if ( $redis->lLen($redis_name) < $goods_number)
  {
    $redis->rPush($redis_name, $uid);
    echo "用户:" . $uid . "秒杀成功" . $n . "<br/>";
  }

}
echo "<b style='color:red;'>秒杀成功总数:".$redis->lLen($redis_name)."</b>";

 

转载于:https://www.cnblogs.com/keta/p/8560042.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值