redis更新快取導致資料一致性問題的解決方案

2021-10-23 18:42:28 字數 309 閱讀 7268

1、刪除快取

(其他執行緒此時查詢快取為空,會查詢到資料庫的舊值,並回填髒資料)

2、更新資料庫

3、休眠500ms,等待髒資料回填完成

4、再次刪除快取,清空髒資料

1、操作業務時,直接將其丟進佇列,等待非同步執行;

2、當出現讀請求時,先讀快取,成功則返回;

3、如果快取不存在,再去判斷佇列頭部是否是同一條記錄的更新請求;

4、如果是,為了不打斷其操作,將讀請求也丟進佇列,然後同步等待快取更新完成;

5、如果不是,說明該更新請求早已完成,直接讀資料庫並快取即可,不要入佇列。

redis 快取更新一致性

當執行寫操作後,需要保證從快取讀取到的資料與資料庫中持久化的資料是一致的,因此需要對快取進行更新。因為涉及到資料庫和快取兩步操作,難以保證更新的原子性。在設計更新策略時,我們需要考慮多個方面的問題 更新快取有兩種方式 更新快取和更新資料庫有兩種順序 兩兩組合共有四種更新策略,現在我們逐一進行分析。併...

Redis 快取更新一致性

當執行寫操作後,需要保證從快取讀取到的資料與資料庫中持久化的資料是一致的,因此需要對快取進行更新。因為涉及到資料庫和快取兩步操作,難以保證更新的原子性。在設計更新策略時,我們需要考慮多個方面的問題 更新快取有兩種方式 更新快取和更新資料庫有兩種順序 兩兩組合共有四種更新策略,現在我們逐一進行分析。併...

Redis快取一致性

用過redis的應該都清楚,redis作為記憶體快取,只是他查詢快的一大優勢,關係型資料庫只能用作儲存重要資料,或者備份快取的資料,這個時候,不可避免,我們會遇到快取中的資料與關係型資料庫中的資料不一致的情況。出現不一致的現象很常見,如果你是單個使用者肯定不會出現這種情況,如果在多執行緒併發的情況下...