緩存與數(shù)據(jù)庫(kù)雙寫(xiě)不一致

發(fā)生緩存數(shù)據(jù)庫(kù)雙寫(xiě)不一致原因:

有多個(gè)線程并發(fā)情況下同時(shí)對(duì)數(shù)據(jù)庫(kù)寫(xiě)操作并更新緩存


Snipaste_2021-02-28_22-56-51.png

解決方法方法:

1.更新的線程做更新時(shí)做刪除操作,查詢的線程查詢緩存為空就去查數(shù)據(jù)庫(kù)在更新緩存


Snipaste_2021-02-28_22-57-49.png

這種情況還是可能會(huì)發(fā)生更新緩存時(shí)導(dǎo)致緩存數(shù)據(jù)庫(kù)不一致的可能,概率很小,如果一定要要求緩存與數(shù)據(jù)庫(kù)的強(qiáng)一致性,那么就還需要更多的解決辦法比如:

1.延遲雙刪:刪緩存 -> 操作數(shù)據(jù)庫(kù) -> 延時(shí)再刪一次
2.加讀寫(xiě)鎖:讀多寫(xiě)少的情況才使用,讀多寫(xiě)多效率會(huì)很低
3.加鎖:效率最低,相當(dāng)于把所有并行的操作變成串行
4.內(nèi)存隊(duì)列:實(shí)現(xiàn)太復(fù)雜,成本很高
5.使用阿里的canal中間件:需要單獨(dú)部署,學(xué)習(xí)成本高

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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