資料庫和快取一致性方案

2021-10-02 10:37:37 字數 779 閱讀 9853

redis儲存快取,mysql儲存資料。快取進行有效期設定。但是更新mysql,不會更新快取。這樣導致快取和資料庫的一致性問題比較長

mysql更新後,進行更新redis快取。查詢的時候先查詢redis快取,如果沒有快取,只查詢資料庫進行更新快取;快取和資料庫不一致性的時間短 cache aside pattern

mysql更新後,通過mq訊息消費,非同步進行redis更新;這樣可以減少連線過多的問題;但是無法解決時序性問題,同樣的鍵值被兩個服務更新後。但是無法保證進入訊息系統的順序是準確的

監聽binlog,時序性問題得到解決;也進行了非同步控制

在資料更新時,同時寫入快取cache和後端儲存

缺點 寫入速度較慢

我就直接寫後端資料,這樣讓快取自動失效之後,再重新整理一遍

優點簡單,不會丟失資料

缺點快取和資料庫會有不一致的情況

write-behind在資料更新時,只寫入快取。優點是資料寫入速度快,適用於繁重的寫工作負載。與read-through配合使用,可以很好地用於混合工作負載,最近更新和訪問的資料總是在快取中可用

操作就是只更新快取,只有當快取被替換時才進行持久化

資料容易丟失

應用程式無需管理資料來源和快取,只需要將資料來源的同步委託給快取提供程式cache provider即可。所有資料互動都是通過抽象快取層完成的。

對於應用模組編碼比較簡單,缺點是需要額外的服務cache privider

資料庫和快取一致性

今天程式過程中突然想到了乙個問題,怎麼保證redis快取和mysql資料庫中的資料相同 一致性 即在更新資料時怎樣保證資料庫和redis快取始終相同。從理論上講,給快取設定過期時間是保證最終一致性的解決方案。這種方案下,所有寫操作以資料庫為準,對快取做最大努力即可。下面介紹的是不依賴於給快取設定過期...

資料庫和快取一致性推薦方式

資料儲存在資料庫中,為了加快業務訪問的速度,我們將資料庫中的一些資料放在快取中,那麼問題來了,如何確保db和快取中資料的一致性呢?我們列出了5種方法,大家都了解一下,然後根據業務自己選擇。獲取快取邏輯 使用過定時器,定時重新整理redis中的快取。db更新資料邏輯 更新資料不用考慮快取中的資料,直接...

資料庫和快取一致性問題

前言 快取一致性是指業務在引入分布式快取系統後,業務對資料的更新除了要更新儲存以外還需要同時更新快取,對兩個系統進行資料更新就要先解決分布式系統中的隔離性和原子性難題。目前大多數業務在引入分布式快取後都是通過犧牲小概率的一致性來保障業務效能,因為要在業務層嚴格保障資料的一致性,代價非常高,業務引入分...