1. 面試官:什么是緩存穿透、緩存雪崩、緩存擊穿?

        共 1276字,需瀏覽 3分鐘

         ·

        2021-05-20 03:07

        點(diǎn)擊藍(lán)色“黃小斜學(xué)Java”關(guān)注我喲

        加個(gè)“星標(biāo)”,每天和你一起多進(jìn)步一點(diǎn)點(diǎn)!

        緩存穿透、緩存雪崩和緩存擊穿

        如果不了解,可能對這幾個(gè)概念都不了解,聽著感覺太高大上,至少筆者剛開始是這么覺得,本文并不是詳細(xì)介紹如何解決和完美解決,更主要的是認(rèn)識和認(rèn)知吧。

        redis緩存穿透

        理解

        • 重在穿透吧,也就是訪問透過redis直接經(jīng)過mysql,通常是一個(gè)不存在的key,在數(shù)據(jù)庫查詢?yōu)?code style="font-size: 14px;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;">null。每次請求落在數(shù)據(jù)庫、并且高并發(fā)。數(shù)據(jù)庫扛不住會掛掉。

        解決方案

        • 可以將查到的null設(shè)成該key的緩存對象。
        • 當(dāng)然,也可以根據(jù)明顯錯(cuò)誤的key在邏輯層就就行驗(yàn)證。
        • 同時(shí),你也可以分析用戶行為,是否為故意請求或者爬蟲、攻擊者。針對用戶訪問做限制。
        • 其他等等,比如用布隆過濾器(超大型hashmap)先過濾。

        redis緩存雪崩

        理解

        • 雪崩,就是某東西蜂擁而至的意思,像雪崩一樣。在這里,就是redis緩存集體大規(guī)模集體失效,在高并發(fā)情況下突然使得key大規(guī)模訪問mysql,使得數(shù)據(jù)庫崩掉。可以想象下國家人口老年化。以后那天人集中在70-80歲,就沒人干活了。國家勞動力就造成壓力。

        解決方案

        • 通常的解決方案是將key的過期時(shí)間后面加上一個(gè)隨機(jī)數(shù),讓key均勻的失效。
        • 考慮用隊(duì)列或者鎖讓程序執(zhí)行在壓力范圍之內(nèi),當(dāng)然這種方案可能會影響并發(fā)量。
        • 熱點(diǎn)數(shù)據(jù)可以考慮不失效

        redis緩存擊穿

        理解

        緩存擊穿,是指一個(gè)key非常熱點(diǎn),在不停的扛著大并發(fā),大并發(fā)集中對這一個(gè)點(diǎn)進(jìn)行訪問,當(dāng)這個(gè)key在失效的瞬間,持續(xù)的大并發(fā)就穿破緩存,直接請求數(shù)據(jù)庫,好像蠻力擊穿一樣。

        在這里插入圖片描述
        • 擊穿和穿透不同,穿透的意思是想法繞過redis去使得數(shù)據(jù)庫崩掉。而擊穿你可以理解為正面剛擊穿,這種通常為大量并發(fā)對一個(gè)key進(jìn)行大規(guī)模的讀寫操作。這個(gè)key在緩存失效期間大量請求數(shù)據(jù)庫,對數(shù)據(jù)庫造成太大壓力使得數(shù)據(jù)庫崩掉。就比如在秒殺場景下10000塊錢的mac和100塊的mac這個(gè)100塊的那個(gè)訂單肯定會被搶到爆,不斷的請求(當(dāng)然具體秒殺有自己處理方式這里只是舉個(gè)例子)。所以緩存擊穿就是針對某個(gè)常用key大量請求導(dǎo)致數(shù)據(jù)庫崩潰。

        解決方案

        • 可以使用互斥鎖避免大量請求同時(shí)落到db。
        • 布隆過濾器,判斷某個(gè)容器是否在集合中
        • 可以將緩存設(shè)置永不過期(適合部分情況)
        • 做好熔斷、降級,防止系統(tǒng)崩潰。
        — 【 THE END 】—
        本公眾號全部博文已整理成一個(gè)目錄,請?jiān)诠娞柪锘貜?fù)「m」獲??!

        最近面試BAT,整理一份面試資料Java面試BATJ通關(guān)手冊,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。

        獲取方式:點(diǎn)“在看”,關(guān)注公眾號并回復(fù) PDF 領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

        文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。

        謝謝支持喲 (*^__^*)

        瀏覽 72
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 蜜桃秘 av无码一区二区三区 | 在线无码成人电影 | 国产精品免费久久久久久久久久中文 | 想看一级毛片 | 熟女骚逼 |