緩存中間件與數據庫的相愛相殺

前言

(面試場景)


先更新數據庫,再刪除緩存

在這裏插入圖片描述
(問題描述)


先刪除緩存,再更新數據庫

在這裏插入圖片描述
(問題描述)


解決方案

大前提:使用緩存就要容忍數據不一致。能保證最終一致性即可。

設置有效期

好處:緩存超過有效期被淘汰之後,程序會從數據庫獲取最新的數據重新放入緩存,保持一致性。

壞處:因爲緩存會失效,會引發緩存擊穿緩存雪崩等問題。

加鎖

不管是單機鎖還是分佈式鎖,這種做法可以保證不同線程之間的操作不會出現不確定的結果,但是實際上在項目中並不會採用這種做法。

所有涉及緩存和數據庫的操作都加上鎖,極大地降低了處理併發的能力。

緩存中心

上面這些問題歸結起來,就是修改緩存的入口太多。

那麼爲了解決這些問題,我們可以把緩存統一由一個模塊來進行管理。

(示意圖)

(代碼示例)

預熱

(示意圖)

監聽日誌,更新緩存

(示意圖)
(工具:canal)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章