redis資料一致性,開發中關於快取和資料同步問題

2021-08-20 14:08:55 字數 881 閱讀 2933

在開發中出現很多關於快取和資料共存問題,本小g網上翻閱cache aside pattern 一些資料,加上專案體驗寫下

寫下這一小簡,大家一塊來**:

使用場景:在使用redis來做資料快取,減輕資料壓力和速度,但是有乙個問題就是快取和mysql資料如何資料一致

一般開發設計為:重點內容

查詢流程:如果在快取查詢到資料,就直接返回快取資料,流程end;

查詢流程:如果查詢不到,就查詢資料庫,然後進行insert cache資料,流程end;

更新流程:更新庫,update或dele快取,流程end;

更新流程:新增庫,

一般開發流程如上(1,2,3,4),但是會出現併發read和write操作,這樣就可以會出現讀時候在insert cahe的時候會insert,庫更新之前資料,產生髒資料,小g:雖然讀一般比較快,這種概率很低但是還是存在如上,但是會出現併發read和write操作,這樣就可以會出現讀時候在insert cahe的時候,會insert,庫更新之前資料,產生髒資料,小g:雖然讀一般比較快,這種概率很低但是還是存在

個人設計簡介:

在資料並不是很大(其他文章中提到:canal阿里這中原理,不過感覺動靜有點大,哈,如果併發不是很大),首先

個人認為如果不進行鎖(小g:如果加鎖可以在,insert cache時候進行判斷是否有鎖,如果有不進行insert操作,這中設計我個人感覺,還是影響力比較小),這種髒資料都會存在,但是針對不是很注重這種事物髒資料,可以放寬下,

設計如下:

1、加鎖對資料在進行快取操作下(業務不是很注重髒資料可以忽略這點)

2、進行先加快取然後再更新庫,如果更新庫有問題,進行刪除快取,這樣就不會出現類似長時間存在髒資料無法解決問題

3、增加快取的有效時間,這樣也可以減少髒資料存活週期;

redis 資料一致性

方式2 資料庫和redis分別處理不同的資料型別 資料庫處理要求強一致實時性的資料,例如金融資料 交易資料 redis處理不要求強一致實時性的資料,例如 最熱貼排行榜 redis和mysql資料的同步,級別大致可以這樣做 讀 讀redis 沒有,讀mysql 把mysql資料寫回redis 寫 寫m...

資料一致性

資料一致性通常指關聯資料之間的邏輯關係是否正確和完整。而資料儲存的一致性模型則可以認為是儲存系統和資料使用者之間的一種約定。如果使用者遵循這種約定,則可以得到系統所承諾的訪問結果。常用的一致性模型有 a 嚴格一致性 linearizability,strict atomic consistency ...

資料一致性

丟失更新 未確定的相關性 不一致的分析和幻想讀 事務a讀取與搜尋條件相匹配的若干行。事務b以插入或刪除行等方式來修改事務a的結果集,然後再提交。幻讀是指當事務不是獨立執行時發生的一種現象,例如第乙個事務對乙個表中的資料進行了修改,比如這種修改涉及到表中的 全部資料行 同時,第二個事務也修改這個表中的...