天天看點

緩存雪崩,緩存穿透,緩存預熱,緩存熱備都是什麼鬼?

緩存雪崩,緩存穿透,緩存預熱,緩存熱備是在做緩存設計或者緩存應用時經常遇到的概念,也是緩存應用過程中必須熟知及知道 的東西。

緩存雪崩

當緩存處于單點情況下,一旦緩存伺服器崩潰,所有的請求就會落到資料庫層,此時,如果由于通路量過大則會導緻資料庫當機,進而導緻整個網站或服務不可用,這種緩存故障就是俗稱的緩存雪崩。

解決方案:解決緩存雪崩故障,就得解決單點問題,提高緩存高可用性,建立分布式的高可用緩存系統,一台緩存伺服器挂了,另外的一台起來繼續工作,更不能影響其他的緩存系統。

緩存穿透

如果某個key對應的資料不存在,而又未對該key做緩存,是以每次請求都會穿過緩存直接到資料庫進行查詢,并發量高的情況下進而導緻資料庫直接當機,這就是緩存穿透。

解決方案:解決緩存穿透,如果做了緩存就要把null值或者空清單等也要緩存起來。如果是惡意攻擊一個不存在的key,在控制層做頻率限制是必須的。

緩存預熱

新的緩存系統沒有任何緩存資料,在緩存重建資料的過程中,系統性能和資料庫負載都不太好,是以最好是在系統上線之前就把要緩存的熱點資料加載到緩存中,這種緩存預加載手段就是緩存預熱。

緩存熱備

緩存熱備即當一台緩存伺服器不可用時能實時切換到備用緩存伺服器,不影響緩存使用。叢集模式下,每個主節點都會有一個或多個從節點來當備用,一旦主節點挂點,從節點立即充當主節點使用。