<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
缺點1:會對介面造成延遲,因為同步寫入redis本身就有延遲,並且還要做重試,如果redis寫入失敗,還需要重試,那就更費時間了。
缺點2:不解耦,如果redis崩了,那直接卡執行緒了
缺點3:如果人為該資料庫,那就沒法同步了, 除非再人為刪除對應的Redis,但刪除Redis這個過程也有個時間差
缺點1:多了層MQ,也就是會有很大的概率導致同步延遲問題.
缺點2:要對MQ的可用性做預防
缺點3:如果人為該資料庫,那就沒法同步了
優點1:可以大幅減少介面的延遲返回的問題
優點2:MQ本身有重試機制,無需人工去寫重試程式碼
優點3:解耦,把查詢Mysql和同步Redis完全分離,互不干擾
CanalServer會偽裝成MysqlServer從庫,去訂閱MysqlServer主庫的Binlog檔案
Canal啟動的時候會設定對應的訊息MQ(RabbitMQ, RocketMQ, Kafka), 監聽到Binlog檔案有變化是,會把變化的sql語句轉換成json格式,並作為訊息內容傳送到MQ中
專案中只要監聽對應MQ,就能拿到Binlog改動的內容,Json資料中有明確的操作型別(CURD), 以及對應的資料。把對應資料同步到redis即可
缺點1:canal訂閱Binlog的整個操作過程是單執行緒的,所以面臨超高並行的情況下,效能可能不太出色。當然可以部署多個Canal 與 多個消費者,但是要注意訊息重複消費問題,做好冪等性校驗
優點1:即使人為改資料庫,也會監聽到,並且也會同步
優點2:非同步同步,不會對介面返回有格外延遲
在執行修改sql之前,先將redis的資料刪除
執行更新sql
延遲一段時間
再次刪除redis的資料
// 延遲雙刪虛擬碼 deleteRedisCache(key); // 刪除redis快取 updateMysqlSql(obj); // 更新mysql Thread.sleep(100); // 延遲一段時間 deleteRedisCache(key); // 再次刪除該key的快取
缺點:這個延遲時間不好把控,到底延遲多久,這個很難去評估
擴充套件: 如果不使用延遲雙刪,僅僅是delete快取,然後改mysql資料。只有這兩步會出現什麼問題呢?
5. 單個請求,單執行緒沒問題,高並行多執行緒下會出問題
6. 如果Thread1執行緒要更新資料,此時Thread1執行緒把redis清理了
7. 此時Thread2執行緒來了,但Thread1還沒有更新mysql完畢
8. Thread2查詢redis肯定是null,此時Thread2就要查mysql了,然後再把查到的資料寫到快取
9. 由於Thread1還沒來得及修改mysql資料,所以此時Thread2查出來的資料是【舊資料】,Thread2把舊資料又寫入Redis 了
10. 此時Thread3執行緒來了,查詢Redis發現有資料,則直接拿快取資料了,此時【Thread3查出來的是舊資料】,直接帶著舊資料返回了,這就是問題所在
11. 而延遲雙刪的第二次刪除作用就是防止Thread2把舊資料又寫入了,有了延遲雙刪,Thread3查詢Redis的時候還是null,就會從mysql 去拿最新資料了
12. 所以正常的這個延遲時間,應該是Thread2查快取到拿mysql資料,到再儲存到redis這整個時間,作為Thread1的延遲時間,但是這個Thread2這個過程的時間會受到很多因素影響,因此很難斷定究竟會是多久
// 延遲雙寫虛擬碼 updateMysqlSql(obj); // 更新mysql addRedis(key); // 再次刪除該key的快取
上述程式碼缺陷;
優化
// 完美延遲雙寫虛擬碼 開啟事務 updateMysqlSql(obj); // 更新mysql addRedis(key); // 再次刪除該key的快取 提交事務
上述程式碼改正:
把兩句程式碼放到一個事務裡面,只有T1執行完Mysql 與 Redis的時候,T2才能開始執行,就可以保證資料一致性。推薦使用分散式鎖
雙寫缺點:Mysql 與 Redis是單執行緒的。效能方面不行,因此不推薦使用
推薦使用Canal的方式,進行非同步同步。其次是MQ方式
到此這篇關於淺談MySQL資料同步到 Redis 快取的幾種方法的文章就介紹到這了,更多相關MySQL資料同步到Redis快取內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45