redis和mysql的資料一致性問題

2021-10-20 22:12:39 字數 318 閱讀 2103

一般來說,redis用作mysql的快取,請求先訪問redis,如果沒有再訪問資料庫,資料庫將請求的資料寫入快取。

但是當增刪改操作時如何保證資料一致性,先更新快取還是先更新mysql?

不管是先刪快取再更新資料庫,還是先更新資料庫再刪快取都會出現資料不一致問題

1.如果刪除了快取redis,還沒有來得及寫庫mysql,另乙個執行緒就來讀取,發現快取為空,則去資料庫中讀取資料寫入快取,此時快取中為髒資料。

2.如果先寫了庫,在刪除快取前,寫庫的執行緒宕機了,沒有刪除掉快取,則也會出現資料不一致情況。

如何保持mysql和redis中資料的一致性

快取由於其高併發和高效能的特性,已經在專案中被廣泛使用。在讀取快取方面,大家沒啥疑問,都是按照下圖的流程來進行業務操作。在快取和資料庫同時存在時,如果有寫操作的時候,先運算元據庫還是先操作快取呢?先思考一下,可能會存在哪些問題,再往下看。這套方案,大家是普遍反對的。為什麼呢?有如下兩點原因。3.1....

如何解決Redis 和MySQL的資料不一致

redis在啟動之後,從資料庫載入資料。在處理讀請求時 不要求強一致性的讀請求,直接從redis中讀取,要求強一致性的直接從mysql讀取。在處理寫請求時 將資料首先都寫到資料庫,之後再更新到redis 如果先寫redis再寫mysql,寫入失敗事務回滾會造成redis中存在髒資料 mysql資料庫...

redis和mysql怎樣保持資料一致

服務端獲取資料首先從redis獲取,如果redis中的資料被刪除就從mysql中獲取資料,在把資料更新到redis 1.redis設定固定時間更新,時間不宜太長,缺點是修改mysql資料不會立即更新 2.更新mysql時同時刪除redis的資料,但這個操作不是原子性的,如果這個時候有其他執行緒插進來...