首先,產生庫存的計數量
public function kucun() { //有十个库存 $count=10; //添加到redis list中 for($i=0;$i<$count;$i++){ Predis::getInstance()->lpush('kucun',111111111); } self::dd(Predis::getInstance()->lrange('kucun',0,-1)); }
完後利用redis的lpop或rpop對list進行裁剪,之前採用llen或incr的方式對資料進行判斷,都會出現超賣的現象,所以這裡使用lpop的邏輯解決了超賣的問題
public function ru() { //判断计数器 if (Predis::getInstance()->lpop('kucun')) { $user=User::where('user_id',1082)->find(); //存入会员id Predis::getInstance()->lpush('user',$user['user_id']); //计数器累计加1 // Predis::getInstance()->incr('number'); echo '加入秒杀成功';exit(); }else{ echo '活动截至'; exit(); } }
測試:
ab -r -n 1000 -c 1000 http://149.28.16.212/index/index/ru
更多Redis相關知識,請造訪Redis使用教學欄位!
以上是redis如何解決秒殺超賣問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!