
當我們更新數(shù)據(jù)庫的時候需要保持數(shù)據(jù)可的數(shù)據(jù)和緩存中的數(shù)據(jù)保持一致在業(yè)務背景的不同所對應的就有兩種解決方式1.必須保證強一致性的業(yè)務解決方案i延遲雙刪先去刪除緩存再去更新數(shù)據(jù)庫等待一段時間后再去刪除緩存刪除兩次緩存的原因由于我們的線程是交替執(zhí)行的有可能再緩存中還存在數(shù)據(jù)庫已經(jīng)更新之前的臟數(shù)據(jù)所以我們要再刪一遍緩存。延時刪除的原因數(shù)據(jù)庫一般是主從模式讀寫分離的所以我們要等待一會讓主節(jié)點把數(shù)據(jù)同步到從節(jié)點之后再進行刪除當然在延遲雙刪的過程中依然不能保證數(shù)據(jù)的強一致性ii采用讀寫鎖進行控制由于我們存入緩存中的數(shù)據(jù)一般都是讀多寫少我們可以采用Redisson中的讀寫鎖來進行完成讀鎖只允許多個線程進行讀操作無法進行寫操作寫鎖則是只能讓一個線程做寫操作這樣我們就實現(xiàn)的數(shù)據(jù)的強一致性2.可以允許延遲一致的業(yè)務在更改數(shù)據(jù)庫之后通過MQ發(fā)送異步請求完成緩存的更新