memcache 快取雪崩現象及解決方法

2021-08-08 11:31:58 字數 721 閱讀 2644

1、什麼是memcache雪崩

快取雪崩一般是由某個快取節點失效,導致其他節點的快取命中率下降, 快取中缺失的資料(memcache經典場景,當有乙個客戶端的服務請求過來的時候,首先去查  memcache,memcache裡面是否快取過了這個資料,如果沒有這個資料,我們就去資料庫查詢,如果有這個資料,我們就從memcache裡面取出來,然後給它返回到客戶端,這是乙個經典的查詢過程,在這個場景中,快取中缺失的資料,是因為它的快取節點失效了,所以缺失的資料將去資料庫查詢。去資料庫查詢.短時間內,造成資料庫伺服器崩潰.

重啟 db,短期又被壓跨,但快取資料也多一些.

db 反覆多次啟動多次,快取重建完畢,db 才穩定執行.

或者,是由於快取週期性的失效,比如每 8小時失效一次,那麼每 8小時,將有乙個請求」峰值」,

嚴重者甚至會令 db 崩潰.

2、解決方案

這個沒有完美解決辦法,但可以分析使用者行為,盡量讓失效時間點均勻分布。不用把時間都設定成8小時一次,可以把裡面的資料隨機分布,比如設定成3—8小時隨機的失效,就不會導致資料庫的壓力變得非常大。

即可以這樣:

在快取失效後,通過加鎖或者佇列來控制讀資料庫寫快取的執行緒數量。比如對某個key只允許乙個執行緒查詢資料和寫快取,其他執行緒等待。 不同的key,設定不同的過期時間,讓快取失效的時間點盡量均勻。 做二級快取,a1為原始快取,a2為拷貝快取,a1失效時,可以訪問a2,a1快取失效時間設定為短期,a2設定為長期,變相使快取時間均勻一些。

MemCache快取雪崩現象

memcache快取雪崩現象 什麼是快取的雪崩現象 快取雪崩一般是由某個快取節點失效,導致其他節點的快取命中率下降,快取中缺失的資料 memcache經典場景,當有乙個客戶端的服務請求過來的時候,首先去查memcache,memcache裡面是否快取過了這個資料,如果沒有這個資料,我們就去資料庫查詢...

memcache 雪崩現象

1 什麼是memcache雪崩 快取雪崩一般是由某個快取節點失效,導致其他節點的快取命中率下降,快取中缺失的資料 memcache經典場景,當有乙個客戶端的服務請求過來的時候,首先去查 memcache,memcache裡面是否快取過了這個資料,如果沒有這個資料,我們就去資料庫查詢,如果有這個資料,...

三 快取雪崩現象和無底洞現象

一般是有某個節點失效,導致其他節點的快取命中率下降,快取中缺失的資料去資料庫查詢,短時間內,造成資料庫伺服器崩潰 重啟db,短時間又被壓垮,但快取資料也多了一些,db反覆多次啟動,快取重建完畢,db才穩定執行 案例 乙個上千萬pv的門戶 快取生命週期設定了6小時,當等到6小時快取失效後,之前放到快取...