日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL和mq一致性,Mysql与Redis一致性问题

發布時間:2023/12/15 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL和mq一致性,Mysql与Redis一致性问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

緩存一致性產生背景

如果每次頻繁的訪問數據庫的時候,雖然查詢底層使用B+樹索引 但還會做磁盤的IO操作,可能會對數據庫的壓力非常大。

所以為了能夠減輕數據庫的訪問壓力,會使用一些緩存實現減輕數據庫的壓力。

比如 Redis、es、ehcache、oscache等。

多級緩存架構設計

首先在jvm內置緩存ehcache、oscache底層基于HashMap實現 ,如果服務集群的情況下數據同步采用rmi實現性能可能不是很好。

補充:rmi就是 jvm與jvm之間通訊

設計模式采用裝飾模式。

Mysql與Redis緩存一致性原理

Mysql與nosql之間數據一致性問題:

Mysql與redis/es/mongdb 都是相同的。

(相同key)

第一次查詢:

1. 查詢二級緩存Redis,redis如果沒有該緩存數據,則開始查詢mysql;

2. 在查詢mysql,如果mysql中存在數據的情況下,就將該數據緩存到Redis中

第二次查詢:

1. 查詢到redis中如果存在該數據的情況下,則不會查詢mysql。

能夠減輕數據庫訪問壓力。

重點解決方案:

1. 對mysql增量做寫的操作的時候,都會同步到Redis。

如果insetdb ,insetredis

如果update ,將redis中該key刪除。---懶加載。

如果update ,直接修改redis。---增量同步。

如果delete ,將redis中該key刪除。---增量同步。

如果數據庫數據發生變化,如何同步給Redis

1. 直接清除Redis緩存;(適合于小項目)基于接口形式實現同步

2. 基于MQ形式異步同步 (適合于中小項目)基于接口形式實現同步

3. 基于canal+mq異步同步 (推薦)基于源頭binlog二進制文件實現同步。

基于canal同步的原理:

1. Canal服務器端偽裝成一個mysql從節點,訂閱mysql主節點的binlog二進制文件

2. Canal服務器端收到binlog文件,就會轉換成json的格式發送給Canal客戶端。

3. Canal客戶端會將該數據同步給nosql緩存 redis

流程:

第一次請求流程:

1. 先請求查詢redis緩存,如果redis緩存沒有數據則查詢mysql數據庫,如果mysql數據庫存在數據,則將該數據緩存到Redis中。

第一次請求流程:

2. 先請求查詢Redis緩存,如果redis緩存存在數據的話,則不會查詢mysql數據

從而實現減輕數據庫訪問壓力。

優化:Canal接收到mysqlbinlog文件,將該消息緩存到kafka中,再開啟多個消費者

異步地獲取消息同步到Redis中,能夠提高同步的效率。

如果數據庫數據發生變化,如何同步給Redis

方案1:直接刪除Redis緩存;

方案2: 基于MQ異步同步更新

方案3: 基于canal訂閱binlog同步

http://127.0.0.1:8081/insert?name=mayikt&age=22

http://127.0.0.1:8081/getUser?id=6

http://127.0.0.1:8081/updateUser?userId=9&name=meite6666

基于canal訂閱binlog同步 實現原理

1. canal服務器模擬偽裝成mysql從節點,訂閱mysql 主節點的binlog文件;

2. 當mysql主節點binlog文件發生變化的時候,會通知給canal服務器端;

3. Canal服務器端在將該binlog文件轉換為json格式數據發送給canal客戶端監聽者。

4. canal客戶端,在將該數據異步寫入到redis中;

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的MySQL和mq一致性,Mysql与Redis一致性问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。