$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>";