讓MS SQL與Redis資料同步的幾種作法

首先,ms sql是資料庫,是永久儲存資料用,保證了資料的可靠性;而redis是拿來做暫存,主要提昇資料存取的性能。

而讓資料庫與暫存達到一致是相當經典的問題。

首先先探討不一致的發生原因,通常是發生在資料有變動的時候,因為資料變更需要同時操作資料庫以及暫存,因為不同系統,無法同時操作瞭解成功與失敗,且有時間差。就導致不一致~

提出幾個作法:

一、先刪暫存,再更新資料庫(在高併發讀寫時會不一致,不建議)

二、先更新資料庫,再刪除暫存【Cache Aside Pattern】(會出現一小段不一致)

三、只更新暫存,讓暫存同步更新資料庫【Read/Write Through Pattern】(不一致的機會很低)

四、只更新暫存,讓暫存非同步更新資料庫【Write Behind Cache Pattern】(性能最高,但如果暫存更新回資料庫時暫存掛了,資料會遺

作者: 林壽山

林壽山 目前任職於軟體公司研究開發部門主管,主要採用.net core/.net 5/6 開發,收銀機pos系統開發,第三方支付設計(綠界、馬來西亞epay/happypay、台新one碼),金流設計,行動支付設計(悠遊卡/一卡通),支付寶,微信,街口支付,信用卡機(聯合信用卡),擅長PHP網頁設計(CodeIgniter、Laravel)框架、Delphi程式設計、資料庫設計、C# WinForm/WebForm程式設計、ASP.net MVC、LINE串接、API串接設計