1. 程式人生 > 其它 >redis和mysql資料一致性問題

redis和mysql資料一致性問題

簡述

  在高併發的業務場景下,資料庫大多數情況都是使用者併發訪問最薄弱的環節。所以,就需要使用redis做一個緩衝操作,讓請求先訪問到redis,而不是直接訪問MySQL等資料庫。

資料一致性問題

  如果刪除了快取Redis,還沒有來得及寫庫MySQL,另一個執行緒就來讀取,發現快取為空,則去資料庫中讀取資料寫入快取,此時快取中為髒資料。因為寫和讀是併發的,沒法保證順序,就會出現快取和資料庫的資料不一致的問題。

延時雙刪策略

  在寫庫前後都進行redis.del(key)操作,並且設定合理的超時時間

  具體的步驟就是:先刪除快取、再寫資料庫、休眠x毫秒、再次刪除快取

  這個x秒則是需要評估自己的專案的讀資料業務邏輯的耗時,確保讀請求結束,寫請求可以刪除讀請求造成的快取髒資料。

  弊端:在超時時間內資料存在不一致,而且又增加了寫請求的耗時

非同步更新快取策略

  待續

  

一點一點積累,一點一點蛻變!