天天看點

高頻面試題-如何避免Redis中緩存穿透、緩存雪崩問題?

Redis,因為其速度快等各方面的原因,被開發人員一直應用于企業級開發。

而一旦開始使用Redis,就必然要考慮的問題就當屬緩存穿透、緩存雪崩的問題了,這也是面試過程中很容易問到的點了,下面我們就來聊一下這些吧。

1. 什麼是緩存穿透?

高頻面試題-如何避免Redis中緩存穿透、緩存雪崩問題?

緩存穿透是指當查詢一個不存在的資料,由于無法命中對應的值,就會一直需要去資料庫中查詢;

是以這個時候Redis并沒有起到減少查詢的次數,失去了使用Redis的初心,反而性能方面有了更大的消耗,就會造成整體的性能下降。

2. 如何解決緩存穿透問題?

一句話答案:給沒有命中的key值設定‘空值’。

雖然無法命中對應的值,但是我們依然要給對應的key設定空值。

這樣,我們就又可以降低直接通路資料庫的次數,進而一定程度上提高了系統性能。

3. 什麼是緩存雪崩?

雪崩時,沒有一片雪花是無辜的。
複制代碼      

緩存雪崩是指當一批緩存資料均設定了相同的過期時間時,會導緻一批緩存資料同一時間失效,屆時就會存在大批的請求同時去通路資料庫,會造成資料庫的瞬時壓力過大,造成雪崩。

4. 如何解決緩存雪崩問題?

一句話答案:給緩存資料的key設定不同的過期時間

緩存雪崩問題就是同一時間緩存過期問題,是以隻需要給緩存資料設定不同的過期時間即可。

由于系統内部業務的限制,可以在某一個區間内取随機值,如:30分鐘-60分鐘之間的任意值;這樣即便會存在相同過期時間,也不會很多。

當然了,如果你系統業務緩存量級比較大,加大區間就可以了。