日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

PHP+Redis鏈表解決高并發下商品超賣問題(實現原理及步驟)

瀏覽:335日期:2022-09-09 14:08:20

上一篇文章聊了一下使用Redis事務來解決高并發商品超賣問題,今天我們來聊一下使用Redis鏈表來解決高并發商品超賣問題。

實現原理

使用redis鏈表來做,因為pop操作是原子的,即使有很多用戶同時到達,也是依次執行,推薦使用。

實現步驟

第一步,先將商品庫存入隊列

/** * 添加商品數量到商品隊列 * @param int $couponId 優惠券ID */function addCoupons($couponId){ //1.初始化Redis連接 $redis = new Redis(); if (!$redis->connect(’127.0.0.1’, 6379)) { trigger_error(’Redis連接出錯!!!’, E_USER_ERROR); } else { echo ’連接正常<br>’; } //根據優惠券ID從數據庫中查詢該優惠券的庫存量 //$sql = 'select id, stock from coupon where id = {$couponId}'; $stock = 10; //假設10就是我們從數據庫中查詢出的該優惠券在數據庫中的庫存量 //我們現在將這10個庫存放入到以該商品ID為key的redis鏈表中,有幾件庫存,就存入多少次1,鏈表長度代表商品庫存數 for($i = 0; $i < $stock; $i++) { $redis->lPush('secKill:'.$couponId.':stock', 1); } $redis->close();}$couponId = 11211;addCoupons($couponId);

我們調用該方法,然后查看redis,鏈表中已經添加了10個元素

PHP+Redis鏈表解決高并發下商品超賣問題(實現原理及步驟)

第二步,搶購開始,設置庫存的緩存周期

這一步根據自己的業務來定,如果業務規定,這個優惠券就放出2分鐘給用戶搶,那么就通過expire()方法給鏈表設置一個有效期,即使是在有效期內沒有搶完仍然有庫存也不讓用戶搶了(由于我們公司業務不對優惠券搶券設置有效期,所以這一步我不需要做)

//設置鏈表有效期是兩分鐘$redis->expire(’key’, 120);

第三步,客戶端執行瞬時搶購操作

/** * 搶優惠券(秒殺) * @param int $couponId 商品ID * @param int $uid 用戶ID * @return bool */function secKill($couponId, $uid){ //1.初始化Redis連接 $redis = new Redis(); if (!$redis->connect(’127.0.0.1’, 6379)) { trigger_error(’Redis連接出錯!!!’, E_USER_ERROR); } else { echo ’連接正常<br>’; } //將已經成功搶購的用戶添加到該以該商品ID為key的集合(set)中 //如果用戶已經在集合中,說明用戶已經成功秒殺過一次了,不允許再次參與秒殺 if ($redis->sIsMember(’secKill:’.$couponId.’:uid’, $uid)) { echo ’秒殺失敗’; return false; } //秒殺商品的庫存key $key = ’secKill:’.$couponId.’:stock’; //從以該優惠券ID為key的鏈表中彈出一個值,如果有值,證明優惠券還有庫存 $isSockNotEmpty = $redis->lPop($key); //判斷庫存,如果庫存大于0,則減庫存,將該成功秒殺用戶加入哈希表,如果小于等于0,秒殺結束 if ($isSockNotEmpty != 1) { echo ’秒殺已結束’; return false; } //搶券成功,將優惠券ID和UID放入到隊列中,由一個單獨的進程隊列來消費隊列里的數據,向用戶推送搶到的優惠券 $redis->lPush(’couponOrder’, $couponId.’+’.$uid); //將成功搶券的用戶記錄到集合中,防止被已搶過的用戶再次秒殺 $redis->sAdd(’secKill:’.$couponId.’:uid’, $uid); $redis->close(); return true;}$couponId = 11211;$uid = mt_rand(1, 100);secKill($couponId, $uid);

第四步,將成功秒殺的用戶入數據庫持久化數據,對于并發量不是很大的搶購,我們可以在第三步成功搶購后直接將信息寫入數據庫,對于并發量比較大的可以放入RabbitMQ消息隊列中消費(推薦使用RabbitMQ隊列而不是redis是因為RabbitMQ可以保證消息百分之百的被消費,而redis就相對沒有那么穩定與可靠)

//此處代碼省略//根據自己的業務場景看看是入數據庫還是放入rabbitMQ消息隊列中消費

現在我們使用ab工具模擬高并發下的搶券行為(2000次請求數,100并發量)

ab -n 2000 -c 100 www.test.com/

然后我們通過Redis Desktop Manager來查看Redis的結果

同樣的,couponOrder隊列里已經有了10份包含用戶uid和優惠券id的信息了,這些信息可以由隊列消費。

PHP+Redis鏈表解決高并發下商品超賣問題(實現原理及步驟)

同時,用戶搶券集合里也保存了10個用戶的UID信息。

PHP+Redis鏈表解決高并發下商品超賣問題(實現原理及步驟)

到此這篇關于PHP+Redis鏈表解決高并發下商品超賣問題(實現原理及步驟)的文章就介紹到這了,更多相關php redis解決高并發下商品超賣內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
91精品国产自产在线丝袜啪| 欧美午夜不卡影院在线观看完整版免费| 久久视频国产| 九九精品调教| 亚洲啊v在线| 日韩欧美三级| 日韩一区电影| 99国产精品久久久久久久| 亚洲欧美网站在线观看| 久久av一区| 亚洲一二三区视频| 日韩精品一区二区三区中文字幕| 亚洲一二三区视频| 欧美精品97| 麻豆国产欧美一区二区三区| 精品国产aⅴ| 99精品网站| 视频一区视频二区中文| 国产精品视频一区二区三区四蜜臂 | 国产成人精选| 精品三级在线| 99久久久久国产精品| 欧美日韩国产在线观看网站 | 国产精品入口久久| 国产一区二区三区久久 | 久久中文欧美| 99视频精品全国免费| 午夜国产欧美理论在线播放| 蜜臀a∨国产成人精品| 日韩激情综合| 日韩在线不卡| 亚洲v天堂v手机在线| 国内一区二区三区| 亚洲视频播放| 色婷婷色综合| 日韩在线观看中文字幕| 免费在线小视频| 日韩欧美三区| 99riav国产精品| 美日韩一区二区三区| 日韩精品中文字幕吗一区二区 | 玖玖玖国产精品| 蜜桃传媒麻豆第一区在线观看| 久久国产婷婷国产香蕉| 激情久久五月| 国产96在线亚洲| 欧美精品三级在线| 亚洲一区观看| 久久久久久久久久久9不雅视频| 日韩高清一级| 国产亚洲永久域名| 成人久久久久| 国产在线看片免费视频在线观看| 亚洲一区欧美| 亚洲精品午夜av福利久久蜜桃| 捆绑调教美女网站视频一区 | 国产精品4hu.www| 免费久久99精品国产| 亚洲激情久久| 国精品一区二区| 亚洲国产专区校园欧美| 色在线中文字幕| 国产中文在线播放| 日韩电影二区| 91亚洲国产高清| 日本免费新一区视频| 亚洲+小说+欧美+激情+另类| 亚洲视频二区| 日韩精品欧美精品| 视频一区中文字幕| 视频一区中文字幕| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲一区二区三区久久久| 制服诱惑一区二区| 一级欧美视频| 日韩国产欧美一区二区三区| 欧美日一区二区三区在线观看国产免 | 久久精品99久久久| 捆绑调教美女网站视频一区| 精品少妇一区| 久久影院资源站| 国产一区二区三区黄网站| 日韩中文影院| 在线精品国产亚洲| 久久精品xxxxx| 高清一区二区三区| 亚洲国产一区二区三区在线播放| 噜噜噜久久亚洲精品国产品小说| 综合国产精品| 欧美经典一区| 一区二区视频欧美| 国产日韩欧美在线播放不卡| 福利一区在线| 久久一二三区| 狠狠久久伊人中文字幕| 日韩精品2区| 午夜亚洲一区| 美腿丝袜亚洲一区| 亚洲欧洲一区| 国产色噜噜噜91在线精品| 成人三级高清视频在线看| 久久大逼视频| 婷婷激情一区| 国产精品白浆| 爽好久久久欧美精品| 麻豆国产欧美一区二区三区| 国产精品88久久久久久| 69堂精品视频在线播放| 亚洲午夜天堂| 一区二区精品| 亚洲最新无码中文字幕久久 | 欧美日韩一区二区国产| 精品一区免费| 天堂√8在线中文| 国产精品夜夜夜| 亚洲精品日本| 欧美日韩国产亚洲一区| 国产中文欧美日韩在线| 欧美日韩精品免费观看视频完整| 久久久免费人体| 日本午夜精品视频在线观看| 欧美一区二区性| 日韩1区在线| 欧美激情三区| 日韩中文字幕亚洲一区二区va在线| 神马午夜久久| 亚洲一级少妇| 久久夜夜操妹子| 国产理论在线| 91嫩草亚洲精品| 麻豆久久一区二区| 国产精品美女午夜爽爽| 日韩国产在线一| 蜜臀久久99精品久久久画质超高清| 国产99久久| 99视频精品视频高清免费| 欧美日韩在线观看视频小说| 水蜜桃久久夜色精品一区| 成人亚洲一区| 成人国产精品久久| 国产suv精品一区二区四区视频| 久久亚洲国产精品尤物| 成人在线免费观看网站| 日韩精品电影| 欧美69视频| 国产亚洲午夜| 日本精品另类| 成人在线免费观看网站| 91tv亚洲精品香蕉国产一区| 久久精品青草| 五月国产精品| 久久爱www.| 最近高清中文在线字幕在线观看1| 91免费精品| 欧美日韩少妇| 久久国产免费看| 中文字幕在线免费观看视频| 欧美 日韩 国产一区二区在线视频 | 麻豆免费精品视频| 国内精品福利| 日韩精品免费视频人成| 国产精品qvod| 人人草在线视频| 亚洲另类黄色| 精品高清久久| 亚洲日韩视频| 日本久久一区| 美女一区网站| 久久精品 人人爱| 亚洲精品在线二区| 91精品婷婷色在线观看| 精品国产中文字幕第一页| 国产亚洲一区二区三区啪| 91九色精品| 免费黄色成人| 性欧美69xoxoxoxo| 人人草在线视频| 一区二区国产在线| 日韩成人av影视| 四虎在线精品| 日韩精品一区二区三区中文字幕| 午夜在线精品| 亚洲二区三区不卡| 亚洲黄页一区| 日本一区二区三区视频在线看| 日韩一二三区在线观看| 国产成人精品999在线观看| 久久精品成人| 欧美天堂一区二区| 涩涩av在线| 中文字幕一区二区三区日韩精品| 蜜桃久久久久久| 99国产精品久久久久久久成人热 | 欧美经典一区| 国产精品国产三级国产在线观看| 韩日一区二区| 午夜久久tv| 久久不见久久见中文字幕免费 | 久久精品电影| 蜜桃视频在线观看一区二区|