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>";
相關文章
相關標籤/搜索