redis和mysql怎樣保持資料一致

2022-10-09 07:45:08 字數 370 閱讀 7647

服務端獲取資料首先從redis獲取,如果redis中的資料被刪除就從mysql中獲取資料,在把資料更新到redis

1.redis設定固定時間更新,時間不宜太長,缺點是修改mysql資料不會立即更新

2.更新mysql時同時刪除redis的資料,但這個操作不是原子性的,如果這個時候有其他執行緒插進來也有可能造成資料不一致

3.redis裡的資料設定為不過期,定期將mysql的資料更新到redis

以上幾種情況都不可避免的有短時間內的資料不一致

如果有場景需要必須同時一致,比如銀行,秒殺之類,有以下幾種方法

1,所有資料都從mysql中獲取,但效能會很差,無法在高併發場景下使用

2,加鎖,保證更新資料和刪除快取的操作的原子性

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

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

資料庫 如何保持Redis和MySQL資料一致

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

保持MySQL和Redis的一致性

目前相當系統架構使用的是mysql和redis組合來實現,這兩者在使用過程中對不同場景會對資料一致性有不一樣的要求,大家都知道mysql主要做持久化資料的,redis唯讀資料的,大家都知道redis用來處理高併發情況的多所以我就稍微根據自己專案經驗總結下 方案一.對於實時要求不高的資料,將這些資料放...