小編給大家分享一下解決redis秒殺超賣的問題,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)三水,10多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575首先,生成庫存的計數(shù)量
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的方式對數(shù)據(jù)進行判斷,都會出現(xiàn)超賣的現(xiàn)象,所以這里使用lpop的邏輯解決了超賣的問題
public function ru() { //判斷計數(shù)器 if (Predis::getInstance()->lpop('kucun')) { $user=User::where('user_id',1082)->find(); //存入會員id Predis::getInstance()->lpush('user',$user['user_id']); //計數(shù)器累計加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秒殺超賣的問題有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道,感謝各位的閱讀!