快取雪崩如何解決?

2021-09-25 11:26:25 字數 797 閱讀 9513

1 快取雪崩:

是指在某乙個時間段,快取集中過期失效。產生雪崩的原因之一,比如馬上就要到雙十二零點,很快就會迎來一波搶購,這波商品時間比較集中的放入了快取,假設快取乙個小時。那麼到了凌晨一點鐘的時候,這批商品的快取就都過期了。而對這批商品的訪問查詢,都落到了資料庫上,對於資料庫而言,就會產生週期性的壓力波峰。

在同一分類中的商品,加上乙個隨機因子。這樣能盡可能分散快取過期時間,而且,熱門類目的商品快取時間長一些,冷門類目的商品快取時間短一些,也能節省快取服務的資源。

解決辦法:

1 )快取失效時間加入隨機因子,盡量讓失效時間點均勻分布,設定不同的過期時間

2)可以加鎖,保證乙個時刻只有乙個執行緒執行寫操作。

2 快取穿透:

程式在處理快取時,一般是先從快取查詢,如果快取沒有這個key獲取為null,則會從db中查詢,並設定到快取中去。

按這種做法,那查詢乙個一定不存在的資料值,由於快取是不命中時需要從資料庫查詢,查不到資料則不寫入快取,這將導致這個不存在的資料每次請求都要到資料庫去查詢,造成快取穿透。

解決辦法:

如果對應在資料庫中的資料都不存在,我們將此key對應的value設定為乙個預設的值,比如「null」,並設定乙個快取的失效時間。當然這個key的時效比正常的時效要小的多。

3 快取擊穿

快取穿透可以檢視    

什麼是快取雪崩,如何解決?

快取雪崩就是指由於快取的原因,導致大量請求到達後端資料庫,從而導致資料庫崩潰,整個系統崩潰,發生災難。快取雪崩解決方案 a.給快取的失效時間,加上乙個隨機值,避免集體失效。b.使用互斥鎖,但是該方案吞吐量明顯下降了。c.雙快取,我們有兩個快取,快取 a 和 快取 b。快取 a 的失效時間為 20 分...

什麼是快取穿透,快取雪崩?二者如何解決?

1 快取雪崩 1.1 什麼是快取雪崩 如果快取集中在一段時間內失效,發生大量的快取穿透,所有的查詢都落在資料庫上,造成了快取雪崩。由於原有快取失效,新快取未到期間所有原本應該訪問快取的請求都去查詢資料庫了,而對資料庫cpu 和記憶體造成巨大壓力,嚴重的會造成資料庫宕機 1.2 解決方案 1.2.1 ...

快取雪崩,快取穿透解決方案

負載過高,甚至宕機。解決思路 1,採用加鎖計數,或者使用合理的佇列數量來避免快取失效時對資料庫造成太大的壓力。這種辦法雖然能緩解資料庫的壓力,但是同時又降低了系統的吞吐量。2,分析使用者行為,盡量讓失效時間點均勻分布。避免快取雪崩的出現。3,如果是因為某台快取伺服器宕機,可以考慮做主備,比如 red...