在資料庫與快取之間的一致性問題?
最好的是:先寫資料庫,再刪除快取.
原因: 寫資料庫之後證明寫成功了,順便把快取刪除了. 寫成功之後拿到的資料就是最新的.
寫資料庫失敗了,快取沒刪除, 還是原來的資料,無傷大雅,--->
寫失敗了,刪除快取成功了?---> 這種事情不會發生的,即使發生了,也沒有問題,查庫,還是原來的資料.
問題來了,寫成功了,刪快取失敗了,這就是麻煩事兒,----->關注點[如何保證刪除快取成功]
方案1: 重試幾次, 這樣刪除成功的可能性就很大了, 要是還是失敗了怎麼辦? [資料不是有過期時間嘛]
方案2: 寫mq, 消費mq去刪除資料,不停的輪詢刪除,這也是一種方案,但是帶來系統的複雜性.
方案3. 監聽寫資料庫庫的binlog日誌,要是成功了,就刪除快取,還是寫mq刪除.
redis快取一致性問題
1 不一致產生的原因?我們在是使用redis過程中,通常會這樣做,先讀取快取,如果快取不存在,則讀取資料庫。不管是先寫庫,再刪除快取 還是先刪除快取,再寫庫,都有可能出現資料不一致的情況。因為寫和讀是併發的,沒法保證順序,如果刪除了快取,還沒有來得及寫庫,另乙個執行緒就來讀取,發現快取為空,則去資料...
快取一致性問題怎麼解決
關於 redis 的其他的一些面試問題已經寫過了,比如常見的快取穿透 雪崩 擊穿 熱點的問題,但是還有乙個比較麻煩的問題就是如何保證快取一致性。對於快取和資料庫的操作,主要有以下兩種方式。先刪除快取,資料庫還沒有更新成功,此時如果讀取快取,快取不存在,去資料庫中讀取到的是舊值,快取不一致發生。延時雙...
快取穿透 雪崩 一致性問題
快取中沒有命中資料,直接到資料庫中查詢 解決 對這些不存在的資料快取乙個空資料 對這類請求進行過濾 布隆過濾器 指的是由於資料沒有被載入到快取中,或者快取資料在同一時間大面積失效 過期 又或者快取伺服器宕機,導致大量的請求都到達資料庫。解決 為了防止快取在同一時間大面積過期導致的快取雪崩,可以通過觀...