Redis實現(xiàn)高并發(fā)下的搶購窜骄、秒殺功能

歡迎大家關(guān)注我的其他<a >Github博客</a>和<a >Csdn</a>锦募,互相交流!

博主最近在項目中遇到了搶購問題邻遏!現(xiàn)在分享下糠亩。
搶購、秒殺是如今很常見的一個應用場景准验,主要需要解決的問題有兩個:
1 高并發(fā)對數(shù)據(jù)庫產(chǎn)生的壓力
2 競爭狀態(tài)下如何解決庫存的正確減少("超賣"問題)
對于第一個問題赎线,已經(jīng)很容易想到用緩存來處理搶購,避免直接操作數(shù)據(jù)庫糊饱,例如使用Redis垂寥。
重點在于第二個問題
常規(guī)寫法:
查詢出對應商品的庫存,看是否大于0另锋,然后執(zhí)行生成訂單等操作滞项,但是在判斷庫存是否大于0處,如果在高并發(fā)下就會有問題夭坪,導致庫存量出現(xiàn)負數(shù)


這里寫圖片描述
這里寫圖片描述

優(yōu)化方案1:將庫存字段number字段設(shè)為unsigned文判,當庫存為0時,因為字段不能為負數(shù)室梅,將會返回false

這里寫圖片描述

優(yōu)化方案2:使用MySQL的事務戏仓,鎖住操作的行

這里寫圖片描述

這里寫圖片描述

優(yōu)化方案3:使用非阻塞的文件排他鎖


這里寫圖片描述
這里寫圖片描述

優(yōu)化方案4:使用redis隊列潭流,因為pop操作是原子的,即使有很多用戶同時到達柜去,也是依次執(zhí)行,推薦使用(mysql事務在高并發(fā)下性能下降很厲害拆宛,文件鎖的方式也是)


這里寫圖片描述

搶購嗓奢、描述邏輯

這里寫圖片描述
這里寫圖片描述

模擬5000高并發(fā)測試
webbench -c 5000 -t 60 http://192.168.1.198/big/index.php
ab -r -n 6000 -c 5000 http://192.168.1.198/big/index.php

上述只是簡單模擬高并發(fā)下的搶購,真實場景要比這復雜很多浑厚,很多注意的地方
如搶購頁面做成靜態(tài)的股耽,通過ajax調(diào)用接口
再如上面的會導致一個用戶搶多個,思路:
需要一個排隊隊列和搶購結(jié)果隊列及庫存隊列钳幅。高并發(fā)情況物蝙,先將用戶進入排隊隊列,用一個線程循環(huán)處理從排隊隊列取出一個用戶敢艰,判斷用戶是否已在搶購結(jié)果隊列诬乞,如果在,則已搶購钠导,否則未搶購震嫉,庫存減1,寫數(shù)據(jù)庫牡属,將用戶入結(jié)果隊列票堵。

測試數(shù)據(jù)表

這里寫圖片描述
這里寫圖片描述
這里寫圖片描述
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市逮栅,隨后出現(xiàn)的幾起案子悴势,更是在濱河造成了極大的恐慌,老刑警劉巖措伐,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件特纤,死亡現(xiàn)場離奇詭異,居然都是意外死亡废士,警方通過查閱死者的電腦和手機叫潦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來官硝,“玉大人矗蕊,你說我怎么就攤上這事∏饧埽” “怎么了傻咖?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長岖研。 經(jīng)常有香客問我卿操,道長警检,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任害淤,我火速辦了婚禮扇雕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘窥摄。我一直安慰自己镶奉,他們只是感情好,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布崭放。 她就那樣靜靜地躺著哨苛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪币砂。 梳的紋絲不亂的頭發(fā)上建峭,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機與錄音决摧,去河邊找鬼亿蒸。 笑死,一個胖子當著我的面吹牛蜜徽,可吹牛的內(nèi)容都是我干的祝懂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拘鞋,長吁一口氣:“原來是場噩夢啊……” “哼砚蓬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起盆色,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤灰蛙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后隔躲,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體摩梧,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年宣旱,在試婚紗的時候發(fā)現(xiàn)自己被綠了仅父。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡浑吟,死狀恐怖笙纤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情组力,我是刑警寧澤省容,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站燎字,受9級特大地震影響腥椒,放射性物質(zhì)發(fā)生泄漏阿宅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一笼蛛、第九天 我趴在偏房一處隱蔽的房頂上張望洒放。 院中可真熱鬧,春花似錦滨砍、人聲如沸拉馋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至随闺,卻和暖如春日川,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背矩乐。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工龄句, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人散罕。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓分歇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親欧漱。 傳聞我的和親對象是個殘疾皇子职抡,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容