redis數據一致性,開發中關於緩存和數據同步問題

在開發中出現很多關於緩存和數據共存問題,本小G網上翻閱cache aside pattern 一些資料,加上項目體驗寫下
寫下這一小簡,大家一塊來探討:
使用場景:在使用redis來做數據緩存,減輕數據壓力和速度,但是有一個問題就是緩存和mysql數據如何數據一致
一般開發設計爲:重點內容
1. 查詢流程:如果在緩存查詢到就直接返回緩存數據,end;
2. 查詢流程:如果查詢不到,就查詢數據庫,然後進行insert cache數據,end;
3. 更新流程:更新庫,update或dele緩存,end;
4. 更新流程:新增庫,新增庫;
大家一般設計如上,但是會出出現併發read和write操作,這樣就可以會出現讀時候在insert cahe的時候,會insert,庫更新之前數據,產生髒數據,小G:雖然讀一般比較快,這種概率很低但是還是存在
個人設計簡介:
在數據並不是很大(其他文章中提到:canal阿里這中原理,不過感覺動靜有點大,哈,如果併發不是很大),首先
個人認爲如果不進行鎖(小G:如果加鎖可以在,insert cache時候進行判斷是否有鎖,如果有不進行insert操作,這中設計我個人感覺,還是影響力比較小),這種髒數據都會存在,但是針對不是很注重這種事物髒數據,可以放寬下,
設計如下:
1、加鎖對數據在進行緩存操作下(業務不是很注重髒數據可以忽略這點)
2、進行先加緩存然後再更新庫,如果更新庫有問題,進行刪除緩存,這樣就不會出現類似長時間存在髒數據無法解決問題
3、增加緩存的有效時間,這樣也可以減少髒數據存活週期;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章