[Redis]雙寫一致性

Duancf發表於2024-07-18

經典快取模式

旁路快取

讀資料

首先讀快取,

  • 如果快取中有這個資料,直接返回
  • 如果快取中沒有這個資料,去讀資料庫,
    • 如果資料庫中有這個資料,先把這個資料更新到快取,再返回資料
    • 如果資料庫也沒有這個資料,返回無資料

寫資料

先更新資料庫,再刪除快取

讀寫穿透快取

這個模式在使用者和快取之間多了一個抽象快取層,

讀操作

  • 使用者請求抽象快取層讀取資料
  • 抽象快取層讀取快取資料,
    • 如果成功讀到快取資料,直接返回
    • 如果在快取中讀取失敗,再去讀資料庫
      • 如果在資料庫中成功讀取到了資料,返回給抽象快取層
      • 抽象快取層負責寫入快取資料
  • 抽象快取層把資料返回給使用者

寫操作

  • 使用者請求更新資料庫
  • 抽象快取層更新資料庫
  • 抽象快取層更新快取

非同步快取寫入

使用者申請抽象快取層更新資料
抽象快取層只更新快取資料
後臺執行緒批次把快取資料更新到資料庫

相關文章