2022年Redis最新面試題第8篇 - Redis緩存問題

大家好叹洲,我是漫步coding, 最近在整理2022年Redis最新面試題, 大家也可以通過我下面的博客地址在線閱讀,今天講講第8篇 - Redis緩存問題闸溃。本文首發(fā)于公眾號:漫步coding

image

2022年Redis最新面試題目錄

緩存問題

  • 分布式緩存
  • Redis緩存雪崩
  • Redis緩存擊穿
  • Redis緩存穿透
  • 緩存預(yù)熱
  • 緩存降級

Redis緩存雪崩

出現(xiàn)概率: ★★★★★

這個在Redis面試的題目中算是出鏡率特別高的問題了, 建議仔細(xì)消化一下堵泽。

image.png

1)厅贪、緩存雪崩是指<font color=#FF000 >大量的緩存key</font>無法在Redis緩存中進(jìn)行處理,緊接著竖螃,<font color=#FF000 >短時間大量請求直接打到數(shù)據(jù)庫層</font>记舆,導(dǎo)致數(shù)據(jù)庫層的壓力激增, 可能瞬間就會導(dǎo)致數(shù)據(jù)庫宕機(jī)。

緩存雪崩一般是由兩個原因?qū)е碌牡树蓿瑧?yīng)對方案也有所不同茁肠,我們一個個來看。

第一個原因是:緩存中有大量數(shù)據(jù)同時過期缩举,比如說一些APP首頁緩存數(shù)據(jù)垦梆,都設(shè)置了當(dāng)天有效, 凌晨過期仅孩, 在第二天流量高峰時, 大量用戶訪問的請求托猩, 沒有換成從數(shù)據(jù)庫中讀取數(shù)據(jù)。如果應(yīng)用的并發(fā)請求量很大辽慕,那么數(shù)據(jù)庫的壓力也突然變得很大京腥,可能會造成緩存雪崩。

這種類似的問題解決思路也基本簡單, 打散過期時間, 比如設(shè)置過期時間為 24小時之后 + 隨機(jī)N分鐘溅蛉。

另外一個原因是Redis宕機(jī), 這個就需要分析Redis宕機(jī)的原因了公浪, 是因為磁盤滿了還是內(nèi)存滿了, 根據(jù)情況進(jìn)行處理,或者升配置什么的温艇。
如果是內(nèi)存滿了, 也需要考慮是不是緩存過期回收策略的問題因悲。

image.png

Redis緩存擊穿

出現(xiàn)概率: ★★★★

緩存擊穿跟緩存雪崩有點(diǎn)類似,緩存雪崩是大規(guī)模的key失效勺爱,而<font color=#FF000 >緩存擊穿是某個熱點(diǎn)的key失效</font>晃琳,大并發(fā)集中對其進(jìn)行請求,就會造成大量請求讀緩存沒讀到數(shù)據(jù),從而導(dǎo)致高并發(fā)訪問數(shù)據(jù)庫卫旱,引起數(shù)據(jù)庫壓力劇增人灼。這種現(xiàn)象就叫做緩存擊穿。

解決方案:

a)顾翼、在緩存失效后投放,通過互斥鎖或者隊列來控制讀數(shù)據(jù)寫緩存的線程數(shù)量,比如某個key只允許一個線程查詢數(shù)據(jù)和寫緩存适贸,其他線程等待灸芳。這種方式會阻塞其他的線程,此時系統(tǒng)的吞吐量會下降

b)拜姿、熱點(diǎn)數(shù)據(jù)緩存永遠(yuǎn)不過期烙样。

永不過期實際包含兩層意思:

物理不過期,針對熱點(diǎn)key不設(shè)置過期時間

邏輯過期蕊肥,把過期時間存在key對應(yīng)的value里谒获,如果發(fā)現(xiàn)要過期了,通過一個后臺的異步線程進(jìn)行緩存的構(gòu)建

image.png

Redis緩存穿透

出現(xiàn)概率: ★★★★

緩存穿透是指用戶請求的數(shù)據(jù)在<font color=#FF000 >緩存中不存在即沒有命中壁却,同時在數(shù)據(jù)庫中也不存在</font>批狱,導(dǎo)致用戶每次請求該數(shù)據(jù)都要去數(shù)據(jù)庫中查詢一遍。

如果短時間大量類似請求落在數(shù)據(jù)庫上展东,造成數(shù)據(jù)庫壓力過大赔硫,可能導(dǎo)致數(shù)據(jù)庫承受不住而宕機(jī)崩潰。

image.png

解決方法:

a)琅锻、將無效的key存放進(jìn)Redis中:

當(dāng)出現(xiàn)Redis查不到數(shù)據(jù)卦停,數(shù)據(jù)庫也查不到數(shù)據(jù)的情況,我們就把這個key保存到Redis中恼蓬,設(shè)置value="null"惊完,并設(shè)置其過期時間極短,后面再出現(xiàn)查詢這個key的請求的時候处硬,直接返回null小槐,就不需要再查詢數(shù)據(jù)庫了。但這種處理方式是有問題的荷辕,假如傳進(jìn)來的這個不存在的Key值每次都是隨機(jī)的凿跳,那存進(jìn)Redis也沒有意義。

b)疮方、使用布隆過濾器:

如果布隆過濾器判定某個 key 不存在布隆過濾器中控嗜,那么就一定不存在,如果判定某個 key 存在骡显,那么很大可能是存在(存在一定的誤判率)疆栏。于是我們可以在緩存之前再加一個布隆過濾器曾掂,將數(shù)據(jù)庫中的所有key都存儲在布隆過濾器中,在查詢Redis前先去布隆過濾器查詢 key 是否存在壁顶,如果不存在就直接返回珠洗,不讓其訪問數(shù)據(jù)庫,從而避免了對底層存儲系統(tǒng)的查詢壓力若专。

image.png

Redis緩存預(yù)熱

出現(xiàn)概率: ★★★

緩存預(yù)熱如字面意思许蓖,當(dāng)系統(tǒng)上線時,緩存內(nèi)還沒有數(shù)據(jù)调衰,如果直接提供給用戶使用膊爪,每個請求都會穿過緩存去訪問底層數(shù)據(jù)庫,如果并發(fā)大的話窖式,很有可能在上線當(dāng)天就會宕機(jī)蚁飒,因此我們需要在上線前先將數(shù)據(jù)庫內(nèi)的熱點(diǎn)數(shù)據(jù)緩存至Redis內(nèi)再提供出去使用,這種操作就成為"緩存預(yù)熱"萝喘。

緩存預(yù)熱的實現(xiàn)方式有很多,比較通用的方式是寫個批任務(wù)琼懊,在啟動項目時或定時去觸發(fā)將底層數(shù)據(jù)庫內(nèi)的熱點(diǎn)數(shù)據(jù)加載到緩存內(nèi)阁簸。

Redis緩存降級

出現(xiàn)概率: ★★★

緩存降級是指當(dāng)訪問量劇增、服務(wù)出現(xiàn)問題(如響應(yīng)時間慢或不響應(yīng))或非核心服務(wù)影響到核心流程的性能時哼丈,即使是有損部分其他服務(wù)启妹,仍然需要保證主服務(wù)可用∽淼可以將其他次要服務(wù)的數(shù)據(jù)進(jìn)行緩存降級饶米,從而提升主服務(wù)的穩(wěn)定性。

降級的目的是保證核心服務(wù)可用车胡,即使是有損的檬输。如去年雙十一的時候淘寶購物車無法修改地址只能使用默認(rèn)地址,這個服務(wù)就是被降級了匈棘,這里阿里保證了訂單可以正常提交和付款丧慈,但修改地址的服務(wù)可以在服務(wù)器壓力降低,并發(fā)量相對減少的時候再恢復(fù)主卫。

也歡迎關(guān)注我的公眾號: 漫步coding逃默。 一起交流, 在coding的世界里漫步, 回復(fù): <font color=#FF000 >redis</font>, 免費(fèi)獲取最新Redis面試題(含答案)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末簇搅,一起剝皮案震驚了整個濱河市完域,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瘩将,老刑警劉巖吟税,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件关噪,死亡現(xiàn)場離奇詭異,居然都是意外死亡乌妙,警方通過查閱死者的電腦和手機(jī)使兔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來藤韵,“玉大人虐沥,你說我怎么就攤上這事≡笏遥” “怎么了欲险?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長匹涮。 經(jīng)常有香客問我天试,道長,這世上最難降的妖魔是什么然低? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任喜每,我火速辦了婚禮,結(jié)果婚禮上雳攘,老公的妹妹穿的比我還像新娘带兜。我一直安慰自己,他們只是感情好吨灭,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布刚照。 她就那樣靜靜地躺著,像睡著了一般喧兄。 火紅的嫁衣襯著肌膚如雪无畔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天吠冤,我揣著相機(jī)與錄音浑彰,去河邊找鬼。 笑死咨演,一個胖子當(dāng)著我的面吹牛闸昨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播薄风,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼饵较,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了遭赂?” 一聲冷哼從身側(cè)響起循诉,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎撇他,沒想到半個月后茄猫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狈蚤,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年划纽,在試婚紗的時候發(fā)現(xiàn)自己被綠了脆侮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡勇劣,死狀恐怖靖避,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情比默,我是刑警寧澤幻捏,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布,位于F島的核電站命咐,受9級特大地震影響篡九,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜醋奠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一榛臼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钝域,春花似錦讽坏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庵朝。三九已至,卻和暖如春八秃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工笙蒙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人庆锦。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓捅位,卻偏偏與公主長得像,于是被迫代替她去往敵國和親搂抒。 傳聞我的和親對象是個殘疾皇子艇搀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評論 2 349

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