天天看點

Redis—緩存擊穿、緩存穿透、緩存雪崩

很多時候,redis中的緩存是要設定過期時間的,假如redis中的資料,過期時間都設定成一樣的,那麼到了時間之後,全部緩存過期失效,下一秒所有的請求都會通路資料庫,那麼資料庫可能因為通路量過大導緻“崩潰”,這就是緩存雪崩。

如果緩存集中在一段時間内失效,發生大量的緩存穿透,所有的查詢都落在資料庫上,造成了緩存雪崩。

這個沒有完美解決辦法,但可以分析使用者行為,盡量讓失效時間點均勻分布。大多數系統設計者考慮用加鎖或者隊列的方式保證緩存的單線程(程序)寫,進而避免失效時大量的并發請求落到底層存儲系統上。

應對方法:

1、緩存永遠不過期:最暴力的解決辦法,緩存不設定自動過期時間,隻要緩存不崩,資料庫就不會崩。

2、使用加鎖或者隊列的方式保證來保證不會有大量的線程對資料庫一次性進行讀寫,進而避免失效時大量的并發請求落到底層存儲系統上。

加鎖排隊. 限.........

繼續閱讀