php+redis list實現(xiàn)消息隊列

最近公司要做一個秒殺活動匪补,結(jié)合大量的預熱然后估算了現(xiàn)目前的網(wǎng)站真實用戶數(shù)據(jù)溃卡,結(jié)合我們一系列的數(shù)據(jù)統(tǒng)計后(這里面就不一一細講了,大致就是平時的峰值流量的150%)币绩,我們得出的是qps在300左右蜡秽。其實這流量并不算高,我們就沒有采用rebittmq這些專門的消息隊列來進行處理缆镣,因為學習成本較高芽突,而且并不是特別的需要,所以我們決定用redis的list來進行消息隊列的實現(xiàn)费就。

這里講一點題外話诉瓦,redis依舊發(fā)布的5.+版本中有一個stream流的類型,那么這個是什么呢力细。Redis Stream本質(zhì)上是在Redis內(nèi)核上(非Redis Module)實現(xiàn)的一個消息發(fā)布訂閱功能組件。相比于現(xiàn)有的PUB/SUB固额、BLOCKED LIST眠蚂,其雖然也可以在簡單的場景下作為消息隊列來使用,但是Redis Stream無疑要完善很多斗躏。Redis Stream提供了消息的持久化和主備復制功能逝慧、新的RadixTree數(shù)據(jù)結(jié)構(gòu)來支持更高效的內(nèi)存使用和消息讀取、甚至是類似于Kafka的Consumer Group功能。Redis Stream是一個作者已經(jīng)謀劃多年的feature笛臣,本質(zhì)是一個消息隊列云稚,但是和kafka、RocketMq等消息中間件相比也有其獨特之處沈堡。Redis Stream本來是計劃放在4.0這個大版本中發(fā)布(原計劃4.2),但是由于確實是個比較重磅的feature静陈,對內(nèi)核的改動也比較大,目前已經(jīng)提升到Redis 5.0發(fā)布

所以以后大家可以盡可能的多使用redis的消息隊列了诞丽,像我這種懶人就不喜歡去為了一個功能實現(xiàn)去搞一堆復雜的東西鲸拥,傳言說的是redis的stream的某些方面處理數(shù)據(jù)的性能可以接近甚至超過kafka的處理能力,所以我們的大數(shù)據(jù)也完全可以處理了僧免,但是目前來說刑赶,就我所接觸到的公司都還沒開始正式投入使用,可以等一段時間后各大社區(qū)開始投入使用后懂衩,我會出一篇具體的文章來蹭蹭熱度撞叨。

首先吐槽下自己吧,這篇文章本來打算昨天就應該發(fā)了浊洞,結(jié)果不小心關(guān)機了(沒電谒所,心里是萬馬奔騰,是我在代碼上寫了很多注釋都沒保存沛申,哎)首先我們講講我們的原理吧劣领,我們首先在服務端起一個php服務,監(jiān)控秒殺隊列铁材,如果有數(shù)據(jù)進入list隊列中尖淘,就將數(shù)據(jù)讀取到數(shù)據(jù)庫。下面就是簡單的demo示例著觉,我們主要用的linux環(huán)境村生。


首先·是我們的秒殺代碼,秒殺開始主要走這里的邏輯饼丘。這里沒啥可講的趁桃。

服務端監(jiān)控代碼。我們可以在秒殺前1小時進行服務開啟肄鸽,也可以用定時任務進行啟動卫病,當然時間就可能不是1小時了。此處我們就是執(zhí)行了一個死循環(huán)不斷的讀取list的值典徘,當記錄值i的值為10的時候進行終止程序蟀苛。讀取的值呢我們可以進行排隊發(fā)短信或者存入數(shù)據(jù)庫之類的。

我們開始試驗逮诲,首先帜平,我們開啟腳本幽告,在終端執(zhí)行php redis_contab.php

因為服務器是新配置的,所以我直接在終端操作裆甩,執(zhí)行插入數(shù)據(jù)


然后呢冗锁,監(jiān)控端就可以看見這個了


其實這里代碼還有很多可以進行優(yōu)化的,這里我只是提出的一個樣板嗤栓,一般消息隊列需要一定的容錯性冻河,就是如果一個人從rpop彈出來,插入到數(shù)據(jù)庫失敗抛腕,那么這個人應該被lpush到redislist隊列中去芋绸。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市担敌,隨后出現(xiàn)的幾起案子摔敛,更是在濱河造成了極大的恐慌,老刑警劉巖全封,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件马昙,死亡現(xiàn)場離奇詭異,居然都是意外死亡刹悴,警方通過查閱死者的電腦和手機行楞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來土匀,“玉大人子房,你說我怎么就攤上這事【驮” “怎么了证杭?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長妒御。 經(jīng)常有香客問我解愤,道長,這世上最難降的妖魔是什么乎莉? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任送讲,我火速辦了婚禮,結(jié)果婚禮上惋啃,老公的妹妹穿的比我還像新娘哼鬓。我一直安慰自己,他們只是感情好肥橙,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布魄宏。 她就那樣靜靜地躺著,像睡著了一般存筏。 火紅的嫁衣襯著肌膚如雪宠互。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天椭坚,我揣著相機與錄音予跌,去河邊找鬼。 笑死善茎,一個胖子當著我的面吹牛券册,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播垂涯,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼烁焙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了耕赘?” 一聲冷哼從身側(cè)響起骄蝇,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎操骡,沒想到半個月后九火,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡册招,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年岔激,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片是掰。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡虑鼎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出键痛,到底是詐尸還是另有隱情炫彩,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布散休,位于F島的核電站媒楼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏戚丸。R本人自食惡果不足惜划址,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望限府。 院中可真熱鬧夺颤,春花似錦、人聲如沸胁勺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽署穗。三九已至寥裂,卻和暖如春嵌洼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背封恰。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工麻养, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人诺舔。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓鳖昌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親低飒。 傳聞我的和親對象是個殘疾皇子许昨,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

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