色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

DB讀寫分離情況下,如何解決緩存和數(shù)據(jù)庫不一致性問題?

錢良釵2年前10瀏覽0評論

有兩種方案。

先來了解什么情況下會產(chǎn)生緩存和數(shù)據(jù)庫數(shù)據(jù)不一致。查詢數(shù)據(jù)時優(yōu)先從緩存中取,如果緩存沒有就查詢數(shù)據(jù)庫并且寫入緩存。如果數(shù)據(jù)庫數(shù)據(jù)改變了則清除緩存。在正常情況下是沒有問題的。但是在服務的并發(fā)非常高的情況下,刪除了緩存此時數(shù)據(jù)庫還沒來得及更新完數(shù)據(jù)就又有查詢請求來了,這時候讀到的還是舊數(shù)據(jù)并且還會將舊數(shù)據(jù)寫入緩存。此時就造成了緩存和數(shù)據(jù)庫不一致。

第一種解決方案:延時刪除。在改變數(shù)據(jù)庫數(shù)據(jù)時清除緩存的操作延時一段時間,這段時間可以非常短,只需要保證數(shù)據(jù)庫寫操作完成就可以了。但在實際環(huán)境中我們并不知道數(shù)據(jù)庫什么時候才把數(shù)據(jù)寫完成,因此這段時間不好控制,短了的話起不到作用,長了的話影響體驗。不過在一般情況下這種方式已經(jīng)可以解決問題了。

另一種方案是利用數(shù)據(jù)庫的binlog,訂閱binlog當數(shù)據(jù)完成更新時用消息來通知刪除緩存。這種方案可以確保數(shù)據(jù)庫更新操作完成并且及時更新緩存。