最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

分享到微博請遵守國家法律
临西县| 黄梅县| 陇西县| 万州区| 海盐县| 安龙县| 信丰县| 唐河县| 舒兰市| 大英县| 唐山市| 黄梅县| 错那县| 图木舒克市| 大城县| 赫章县| 广水市| 奇台县| 维西| 大化| 新营市| 阳曲县| 静宁县| 日土县| 邵东县| 开化县| 当涂县| 光山县| 阜平县| 扶余县| 于田县| 封丘县| 炎陵县| 静海县| 余姚市| 兴海县| 古浪县| 南投市| 楚雄市| 江西省| 浏阳市|