$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>";
Redis实现秒杀系统
本文介绍了一种使用Redis实现的简单秒杀系统。该系统通过将商品库存存储在Redis列表中来快速响应高并发请求,并利用Redis的过期机制确保库存的准确性。文章详细展示了从初始化商品库存到用户下单的全过程。
3146

被折叠的 条评论
为什么被折叠?



