无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(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ù)熱的評論 (共 條)

分享到微博請遵守國家法律
墨竹工卡县| 峨眉山市| 隆安县| 吴旗县| 横峰县| 建始县| 汉沽区| 泰州市| 定陶县| 栾城县| 松原市| 鄂托克前旗| 夏邑县| 巫山县| 新野县| 南昌市| 鸡东县| 岑溪市| 广水市| 遂平县| 遵义市| 阜新| 当雄县| 麻阳| 济阳县| 五常市| 确山县| 贵州省| 泸水县| 霍林郭勒市| 衡阳市| 小金县| 彭水| 高邑县| 庆阳市| 手游| 肃北| 呼和浩特市| 厦门市| 手机| 乡城县|