五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

redis面試篇-01一文搞懂雪崩、穿透、擊穿、預(yù)熱

2023-06-08 22:08 作者:懶人Java屈原  | 我要投稿

你知道什么是緩存雪崩嗎?你知道什么是緩存穿透嗎?你知道redis的持久化機制是什么嗎?redis作為緩存數(shù)據(jù)庫在項目中大量使用,在面試時,被問到的幾率也非常高頻。今天,我就帶大家從這幾個問題出發(fā),了解下redis。

1.什么是緩存雪崩?

日常開發(fā)中,為了節(jié)省內(nèi)存空間,redis的key值會設(shè)置過期時間。一旦大量的redis緩存過期,所有的請求全部懟到數(shù)據(jù)庫(mysql默認最大連接數(shù),看版本),就會把數(shù)據(jù)庫搞掛掉(如下圖所示),這就是緩存雪崩。

怎么解決緩存雪崩呢?

1.設(shè)置熱點數(shù)據(jù)永不過期

2.數(shù)據(jù)訪問加互斥鎖,每次只允許一個用戶訪問

3.緩存降級策略,比如:redis緩存失效,還有本地緩存,本地緩存之后才是mysql

4.緩存失效時間分散化,防止集中失效:

將緩存的key值先羅列到紙上,然后對key值時間進行規(guī)劃,分散開來

將緩存的key值失效時間,加上一個隨機數(shù),進行分散。

2.什么是緩存穿透?

如果一個key值,它在redis與數(shù)據(jù)庫都不存在時,如果一個黑客利用這個key值,進行高并發(fā)訪問,就會搞垮數(shù)據(jù)庫,稱為緩存穿透。


1.當(dāng)這個key值不存在時,先臨時將null或者空字符寫入到redis中,過期時間設(shè)置的短一些,幾分鐘以內(nèi)。

2.將數(shù)據(jù)庫所有的結(jié)果放到布隆過濾器里,布隆過濾器結(jié)果只存0與1,當(dāng)0時,代表數(shù)據(jù)庫沒有數(shù)據(jù)。直接拒絕查詢。

3.什么是緩存擊穿?

當(dāng)一個key值過期時,請求激增,大量的請求把數(shù)據(jù)庫搞垮。
怎么解決緩存擊穿?

1.熱點數(shù)據(jù)設(shè)置永不過期

2.從數(shù)據(jù)庫讀取key值并更新到緩存使用排它鎖,同一時間只允許一個線程操作。其他線程進入睡眠狀態(tài),被喚醒獲取到鎖后,先檢測緩存是否有數(shù)據(jù),有數(shù)據(jù)直接返回。

4.什么是緩存預(yù)熱

就是系統(tǒng)上線后手動去加載數(shù)據(jù)到緩存中,避免等客戶請求時,再去加載數(shù)據(jù)

解決辦法:

1.寫個緩存刷新頁面,手工操作

2.定時任務(wù)去刷新緩存

3.數(shù)據(jù)量不大的情況可以在系統(tǒng)啟動時,直接加載

5.緩存淘汰策略有哪些

redis緩存淘汰策略可以分為如下:

1.定時清理過期的緩存

2.用戶請求過來時,判斷緩存是否過期,過期就從源數(shù)據(jù)取數(shù)據(jù)并更新緩存


redis面試篇-01一文搞懂雪崩、穿透、擊穿、預(yù)熱的評論 (共 條)

分享到微博請遵守國家法律
监利县| 措勤县| 宜春市| 新河县| 高尔夫| 霍城县| 西安市| 德昌县| 昌吉市| 乌鲁木齐市| 淄博市| 察哈| 汨罗市| 毕节市| 云龙县| 昌黎县| 德令哈市| 富裕县| 嘉禾县| 象山县| 宁津县| 弥渡县| 浦北县| 休宁县| 那曲县| 德州市| 桓仁| 浦江县| 永新县| 青岛市| 固始县| 读书| 嘉义县| 扬州市| 潜江市| 石嘴山市| 灵石县| 海南省| 珠海市| 临漳县| 和田县|