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