MySQL和Redis數據一致性問題


背景

  在高並發的業務場景下,數據庫的性能瓶頸往往是用戶並發訪問過大造成的,所以會有個Redis做個緩沖。

case

  一、A寫,B讀,

    寫:1.淘汰cache 2.寫操作(由於各種原因消耗了1s) 3.更新cache

    讀:1.讀cache 2.讀DB 3更新cache

    在成功寫入之前就讀取了,會導致讀取到臟數據,cache不是最新的數據

  二、主從分離

    同理,在有主從延遲這個過程中,會讓讀操作讀取到臟數據

 

解決:

  1. 淘汰機制,每次寫入一個數據后,隔幾秒去淘汰一次緩存

  2.binlog,Redis根據binlog中的記錄對Redis進行更新

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM