Redis緩存穿透颂翼、緩存雪崩和緩存擊穿

緩存穿透晃洒,是指查詢一個數(shù)據(jù)庫一定不存在的數(shù)據(jù)慨灭。正常的使用緩存流程大致是朦乏,數(shù)據(jù)查詢先進行緩存查詢,如果key不存在或者key已經(jīng)過期氧骤,再對數(shù)據(jù)庫進行查詢呻疹,并把查詢到的對象,放進緩存筹陵。如果數(shù)據(jù)庫查詢對象為空刽锤,則不放進緩存镊尺。

image

Redis緩存流程

代碼流程

參數(shù)傳入對象主鍵ID根據(jù)key從緩存中獲取對象如果對象不為空,直接返回如果對象為空并思,進行數(shù)據(jù)庫查詢?nèi)绻麖臄?shù)據(jù)庫查詢出的對象不為空庐氮,則放入緩存(設(shè)定過期時間)想象一下這個情況,如果傳入的參數(shù)為-1宋彼,會是怎么樣弄砍?這個-1,就是一定不存在的對象输涕。就會每次都去查詢數(shù)據(jù)庫音婶,而每次查詢都是空,每次又都不會進行緩存莱坎。假如有惡意攻擊衣式,就可以利用這個漏洞,對數(shù)據(jù)庫造成壓力檐什,甚至壓垮數(shù)據(jù)庫碴卧。即便是采用UUID,也是很容易找到一個不存在的KEY乃正,進行攻擊螟深。

小編在工作中,會采用緩存空值的方式烫葬,也就是【代碼流程】中第5步界弧,如果從數(shù)據(jù)庫查詢的對象為空,也放入緩存搭综,只是設(shè)定的緩存過期時間較短垢箕,比如設(shè)置為60秒。

image

緩存空值

緩存雪崩

緩存雪崩兑巾,是指在某一個時間段条获,緩存集中過期失效。

產(chǎn)生雪崩的原因之一蒋歌,比如在寫本文的時候帅掘,馬上就要到雙十二零點,很快就會迎來一波搶購堂油,這波商品時間比較集中的放入了緩存修档,假設(shè)緩存一個小時。那么到了凌晨一點鐘的時候府框,這批商品的緩存就都過期了吱窝。而對這批商品的訪問查詢,都落到了數(shù)據(jù)庫上,對于數(shù)據(jù)庫而言院峡,就會產(chǎn)生周期性的壓力波峰兴使。

小編在做電商項目的時候,一般是采取不同分類商品照激,緩存不同周期发魄。在同一分類中的商品,加上一個隨機因子俩垃。這樣能盡可能分散緩存過期時間欠母,而且,熱門類目的商品緩存時間長一些吆寨,冷門類目的商品緩存時間短一些赏淌,也能節(jié)省緩存服務(wù)的資源。

image

緩存時間加入suijiyinzi

其實集中過期啄清,倒不是非常致命六水,比較致命的緩存雪崩,是緩存服務(wù)器某個節(jié)點宕機或斷網(wǎng)辣卒。因為自然形成的緩存雪崩掷贾,一定是在某個時間段集中創(chuàng)建緩存,那么那個時候數(shù)據(jù)庫能頂住壓力荣茫,這個時候想帅,數(shù)據(jù)庫也是可以頂住壓力的。無非就是對數(shù)據(jù)庫產(chǎn)生周期性的壓力而已啡莉。而緩存服務(wù)節(jié)點的宕機港准,對數(shù)據(jù)庫服務(wù)器造成的壓力是不可預(yù)知的,很有可能瞬間就把數(shù)據(jù)庫壓垮咧欣。

緩存擊穿

緩存擊穿浅缸,是指一個key非常熱點,在不停的扛著大并發(fā)魄咕,大并發(fā)集中對這一個點進行訪問衩椒,當(dāng)這個key在失效的瞬間,持續(xù)的大并發(fā)就穿破緩存哮兰,直接請求數(shù)據(jù)庫毛萌,就像在一個屏障上鑿開了一個洞。

小編在做電商項目的時候喝滞,把這貨就成為“爆款”阁将。

其實,大多數(shù)情況下這種爆款很難對數(shù)據(jù)庫服務(wù)器造成壓垮性的壓力囤躁。達到這個級別的公司沒有幾家的冀痕。所以,務(wù)實主義的小編狸演,對主打商品都是早早的做好了準(zhǔn)備言蛇,讓緩存永不過期。即便某些商品自己發(fā)酵成了爆款宵距,也是直接設(shè)為永不過期就好了腊尚。

大道至簡,mutex key互斥鎖真心用不上满哪。

結(jié)束語

在流行的問題面前一定有流行的解決方案婿斥,但有時候,也要根據(jù)自己的實際情況酌情處理哨鸭。大膽設(shè)計民宿,說不定你的解決方案就會被流行呢?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末像鸡,一起剝皮案震驚了整個濱河市活鹰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌只估,老刑警劉巖志群,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蛔钙,居然都是意外死亡锌云,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門吁脱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來桑涎,“玉大人,你說我怎么就攤上這事兼贡∈矗” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵紧显,是天一觀的道長讲衫。 經(jīng)常有香客問我,道長孵班,這世上最難降的妖魔是什么涉兽? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任篙程,我火速辦了婚禮拥诡,結(jié)果婚禮上冗懦,老公的妹妹穿的比我還像新娘。我一直安慰自己没讲,他們只是感情好爬凑,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布迁霎。 她就那樣靜靜地躺著秘豹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疲扎,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天壶熏,我揣著相機與錄音,去河邊找鬼谜酒。 笑死她肯,一個胖子當(dāng)著我的面吹牛晴氨,可吹牛的內(nèi)容都是我干的康嘉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼籽前,長吁一口氣:“原來是場噩夢啊……” “哼亭珍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起枝哄,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤肄梨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后挠锥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體众羡,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年蓖租,在試婚紗的時候發(fā)現(xiàn)自己被綠了粱侣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡蓖宦,死狀恐怖齐婴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情稠茂,我是刑警寧澤柠偶,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站睬关,受9級特大地震影響嚣州,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜共螺,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一该肴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧藐不,春花似錦匀哄、人聲如沸秦效。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阱州。三九已至,卻和暖如春法梯,著一層夾襖步出監(jiān)牢的瞬間苔货,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工立哑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留夜惭,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓铛绰,卻偏偏與公主長得像诈茧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子捂掰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

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