庫(kù)存是先刪緩存還是先改db

庫(kù)存是先刪緩存還是先改db

先改db再淘汰緩存
  • 緩存失效
  • A讀db數(shù)據(jù)是舊值
  • B改數(shù)據(jù)并淘汰緩存
  • A寫入舊值到緩存中
    此種方案,發(fā)生的問(wèn)題的條件比較苛刻,但也會(huì)出現(xiàn)此類問(wèn)題
先淘汰緩存再改db
  • B淘汰緩存
  • A讀取緩存,沒(méi)值,去讀取舊值
  • B修改DB
  • A把舊值寫到緩存中
    此種方案,只要有讀取事件在B淘汰后修改成功前出現(xiàn),則會(huì)出現(xiàn)嚴(yán)重的臟讀問(wèn)題,需要一直等到緩存失效才會(huì)解決問(wèn)題
延遲雙刪

對(duì)于此問(wèn)題,我們常用解決方案是延遲雙刪

  • 先刪除緩存
  • 修改db
  • 休眠x ms再淘汰緩存
    休眠x的目的是為了在修改db時(shí),讓出現(xiàn)的讀事件寫緩存的過(guò)程執(zhí)行完.
    為了防止淘汰緩存失敗,還需要增加重試機(jī)制(mq實(shí)現(xiàn))
    為了增加吞吐量,可以把休眠ms放在協(xié)程中實(shí)現(xiàn)
    讀寫分離主從情況下,休眠時(shí)間可以延長(zhǎng)一點(diǎn)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容