国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

圖解-Redis主從復(fù)制原理

這篇具有很好參考價(jià)值的文章主要介紹了圖解-Redis主從復(fù)制原理。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

大家好,我是「云舒編程」,今天我們來Redis主從復(fù)制原理。

文章首發(fā)于微信公眾號(hào):云舒編程

關(guān)注公眾號(hào)獲?。?br> 1、大廠項(xiàng)目分享
2、各種技術(shù)原理分享
3、部門內(nèi)推

Redis主從復(fù)制

一、什么是主從復(fù)制

主從復(fù)制是指用戶可以搭建多個(gè)服務(wù)器,其中幾個(gè)服務(wù)器當(dāng)做主服務(wù)器,提供寫功能。其余的服務(wù)器當(dāng)做從服務(wù)器,提供讀功能。每當(dāng)主服務(wù)器收到寫請(qǐng)求時(shí),同時(shí)需要把數(shù)據(jù)發(fā)送給從服務(wù)器。保證主從服務(wù)器的數(shù)據(jù)保持最終一致性。利用這個(gè)機(jī)制,可以利用廉價(jià)的服務(wù)器搭建高可用,高并發(fā)集群。主從復(fù)制是搭建高可用集群的必備利器。

二、Redis怎么實(shí)現(xiàn)主從復(fù)制

2.1 slaveof

在Redis中可以使用slaveof命令讓一個(gè)Redis實(shí)例去復(fù)制另一個(gè)Redis實(shí)例的內(nèi)容。這里需要注意當(dāng)A實(shí)例執(zhí)行該命令去復(fù)制B實(shí)例的內(nèi)容后,以前A實(shí)例的內(nèi)容都將被B實(shí)例的內(nèi)容覆蓋。同時(shí)在從服務(wù)器將被設(shè)置為只讀,向從服務(wù)器發(fā)送寫命令時(shí),將被拒絕。(也可以在redis.conf中配置該命令,啟動(dòng)時(shí)就發(fā)起主從同步)

2.2 主從復(fù)制的原理V1

當(dāng)從服務(wù)器發(fā)起slaveof命令后,主從服務(wù)器之間通過TCP長(zhǎng)連接進(jìn)行通信,主要是以下步驟:

圖解-Redis主從復(fù)制原理,redis,數(shù)據(jù)庫,緩存

第一次完整的主從同步就完成了。然后主從之間會(huì)維持TCP連接,每次master收到新的寫命令后,都會(huì)發(fā)給從服務(wù)器。

如果期間連接斷了,當(dāng)從服務(wù)器重新連上主服務(wù)器后,上述的步驟會(huì)重新來一遍??梢园l(fā)現(xiàn)這是很低效的,因?yàn)橹鞣?wù)器只需要把斷連期間的寫入命令發(fā)給從服務(wù)器就可以了,不需要重新生成RDB文件。(生成RDB文件是一個(gè)耗時(shí)操作,設(shè)計(jì)磁盤的讀寫)。

注意:從服務(wù)器在加載RDB文件過程中是阻塞的,無法處理客戶端的請(qǐng)求。

2.3 主從復(fù)制的原理V2

基于上述原因(特別是斷線時(shí)間特別短時(shí)),Redis推出了新的同步命令psync。

psync將同步過程分為了兩塊:1、完整同步;2、部分同步。

完整同步也叫初次同步,也就是第一次主從同步。步驟跟v1上述是一致的。

部分同步主要用戶斷線重連后的同步,它可以將斷線期間的寫入命令發(fā)送給從服務(wù)器,而不需要整個(gè)RDB文件,極大的節(jié)約了資源。當(dāng)從服務(wù)器重新連接了主服務(wù)器后,會(huì)發(fā)送psync命令,然后主服務(wù)器回復(fù)continue命名,并且發(fā)送缺少的寫入命令到從服務(wù)器。

2.3.1 部分同步原理

redis完成部分同步功能主要依賴于以下部分:

1、主服務(wù)器的復(fù)制偏移量

2、從服務(wù)器的復(fù)制偏移量

3、命令緩存區(qū)(FIFO隊(duì)列,默認(rèn)大小1MB)

4、服務(wù)器運(yùn)行Id

每次主服務(wù)器向從服務(wù)器傳遞N個(gè)字節(jié)命令后,就在把自己的偏移量+N。從服務(wù)器同理。同時(shí)主服務(wù)器還會(huì)將命令寫入到命令緩存區(qū)里。當(dāng)從服務(wù)器重連是發(fā)生如下步驟:

圖解-Redis主從復(fù)制原理,redis,數(shù)據(jù)庫,緩存

每個(gè)Redis都有自己的唯一標(biāo)識(shí)Id。在啟動(dòng)時(shí)自動(dòng)生成,由40個(gè)隨機(jī)的十六進(jìn)制字符組成。當(dāng)發(fā)送第一次主從同步時(shí),master會(huì)將自己的id發(fā)送會(huì)從服務(wù)器,從服務(wù)器會(huì)將其保存起來。斷線重連時(shí),從服務(wù)器請(qǐng)求同步時(shí)還會(huì)將這個(gè)id發(fā)送給主服務(wù)器,主服務(wù)器判斷該id與自己的id是否一致,如果一致則繼續(xù)執(zhí)行部分同步的剩余步驟。否則執(zhí)行完整同步。

2.4 心跳檢測(cè)

主從服務(wù)器建立連接后,默認(rèn)每隔1秒,從服務(wù)器會(huì)想主服務(wù)器發(fā)送REPLCONF_ACK <offset>報(bào)告自己的狀態(tài)。

主服務(wù)器可以從這個(gè)命令中檢測(cè)出幾個(gè)問題:

1、主從之間的網(wǎng)絡(luò)連接狀態(tài)

? 如果主服務(wù)器在規(guī)則時(shí)間內(nèi)沒有收到從服務(wù)器的心跳命令,就可以認(rèn)為主從之間出現(xiàn)了問題。這個(gè)時(shí)候如果配置了

min-slaves-to-write 3
min-slaves-max-lag 10

//如果從服務(wù)器數(shù)小于3或者3個(gè)服務(wù)器的心跳檢測(cè)延遲值都大于等于10秒,主服務(wù)器將拒絕寫命令

2、檢測(cè)新的寫命令是否丟失

? 每次主服務(wù)器收到從服務(wù)器心跳命令里的offset時(shí),都會(huì)與自己的offset進(jìn)行比較,如果小于自己的。那么可以知道某次傳遞的寫命令在網(wǎng)絡(luò)上丟失或者從服務(wù)器加載失敗,這個(gè)時(shí)候主服務(wù)器會(huì)主動(dòng)將這部分缺少的命令發(fā)送給從服務(wù)器(需要缺失命令還在緩存區(qū),如果不在猜測(cè)應(yīng)該是發(fā)起一次完整同步,未驗(yàn)證過)。

3、輔助實(shí)現(xiàn)min-slaves

2.5 備注

主從服務(wù)器建立套接字連接后,從服務(wù)器首先會(huì)發(fā)起Ping命令檢測(cè)套接字的讀寫是否正常。收到主服務(wù)器的Pong命令后證明正常。然后在判斷主服務(wù)器是否需要身份認(rèn)證,發(fā)起密碼。然后進(jìn)行復(fù)制流程。

推薦閱讀

1、原來阿里字節(jié)員工簡(jiǎn)歷長(zhǎng)這樣

2、一條SQL差點(diǎn)引發(fā)離職

3、MySQL并發(fā)插入導(dǎo)致死鎖


如果你也覺得我的分享有價(jià)值,記得點(diǎn)贊或者收藏哦!你的鼓勵(lì)與支持,會(huì)讓我更有動(dòng)力寫出更好的文章哦!
更多精彩內(nèi)容,請(qǐng)關(guān)注公眾號(hào)「云舒編程」文章來源地址http://www.zghlxwxcb.cn/news/detail-824485.html

到了這里,關(guān)于圖解-Redis主從復(fù)制原理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MySQL高級(jí)第十七篇:數(shù)據(jù)庫主從復(fù)制原理及保證數(shù)據(jù)一致性

    MySQL高級(jí)第十七篇:數(shù)據(jù)庫主從復(fù)制原理及保證數(shù)據(jù)一致性

    在實(shí)際工作中,我們常常將Redis作為緩存與MySQL來配合使用,當(dāng)有請(qǐng)求的時(shí)候,首先會(huì)從緩存中進(jìn)行查找,如果存在就直接取出,如果不存在再訪問數(shù)據(jù)庫。 這樣就提升了讀取的效率,也減少了對(duì)后端數(shù)據(jù)庫的訪問壓力。 此外,對(duì)于一般數(shù)據(jù)庫應(yīng)用而言,都是 讀多寫少 的,

    2023年04月25日
    瀏覽(28)
  • ?Redis主從復(fù)制模式原理及演進(jìn)?

    ?Redis主從復(fù)制模式原理及演進(jìn)?

    主從復(fù)制,是指將一臺(tái)Redis服務(wù)器的數(shù)據(jù),復(fù)制到其他的Redis服務(wù)器。前者稱為主節(jié)點(diǎn)(master),后者稱為從節(jié)點(diǎn)(slave);數(shù)據(jù)的復(fù)制是單向的,只能由主節(jié)點(diǎn)到從節(jié)點(diǎn)。 默認(rèn)情況下,每臺(tái)Redis服務(wù)器都是主節(jié)點(diǎn);且一個(gè)主節(jié)點(diǎn)可以有多個(gè)從節(jié)點(diǎn)(或沒有從節(jié)點(diǎn)),但一個(gè)從節(jié)點(diǎn)只能

    2023年04月15日
    瀏覽(14)
  • MySQL數(shù)據(jù)庫——主從復(fù)制

    MySQL數(shù)據(jù)庫——主從復(fù)制

    在實(shí)際的生產(chǎn)環(huán)境中,對(duì)數(shù)據(jù)庫的讀和寫都在同一個(gè)數(shù)據(jù)庫服務(wù)器中,是不能滿足實(shí)際需求的。無論是在安全性、高可用性還是高并發(fā)等各個(gè)方面都是完全不能滿足實(shí)際需求的。因此,通過主從復(fù)制的方式來同步數(shù)據(jù),再通過讀寫分離來提升數(shù)據(jù)庫的并發(fā)負(fù)載能力。有點(diǎn)類似

    2024年02月11日
    瀏覽(28)
  • mysql 數(shù)據(jù)庫主從復(fù)制搭建

    MySQL 主從復(fù)制主要用于實(shí)現(xiàn)高可用性和備份。在主從復(fù)制中,一個(gè) MySQL 實(shí)例(稱為主節(jié)點(diǎn))將其數(shù)據(jù)更改復(fù)制到至少一個(gè)其他 MySQL 實(shí)例(稱為從節(jié)點(diǎn))上。主要借助于數(shù)據(jù)庫二進(jìn)制日志binlog進(jìn)行數(shù)據(jù)的復(fù)制。 主從數(shù)據(jù)庫對(duì)應(yīng)的操作系統(tǒng)、數(shù)據(jù)庫版本要一致。 1、主庫配置 設(shè)

    2024年02月20日
    瀏覽(26)
  • MySQL數(shù)據(jù)庫 主從復(fù)制與讀寫分離

    讀寫分離,基本的原理是讓主數(shù)據(jù)庫處理事務(wù)性增、改、刪操作(INSERT、UPDATE、DELETE),而從數(shù)據(jù)庫處理SELECT查詢操作。數(shù)據(jù)庫復(fù)制被用來把事務(wù)性操作導(dǎo)致的變更同步到集群中的從數(shù)據(jù)庫。 因?yàn)閿?shù)據(jù)庫的“寫”(寫10000條數(shù)據(jù)可能要3分鐘)操作是比較耗時(shí)的。 但是數(shù)據(jù)庫

    2024年02月10日
    瀏覽(30)
  • 【數(shù)據(jù)庫】mysql主從復(fù)制與讀寫分離

    【數(shù)據(jù)庫】mysql主從復(fù)制與讀寫分離

    ??讀寫分離,基本的原理是讓主數(shù)據(jù)庫處理事務(wù)性增、改、刪操作(INSERT、UPDATE、DELETE ),而從數(shù)據(jù)庫處理SELECT查詢操作。數(shù)據(jù)庫復(fù)制被用來把事務(wù)性操作導(dǎo)致的變更同步到集群中的從數(shù)據(jù)庫。 ??因?yàn)閿?shù)據(jù)庫的\\\"寫”(寫10000條數(shù)據(jù)可能要3分鐘)操作是比較耗時(shí)的。 ??

    2024年02月11日
    瀏覽(27)
  • 【MySQL數(shù)據(jù)庫】主從復(fù)制與讀寫分離

    【MySQL數(shù)據(jù)庫】主從復(fù)制與讀寫分離

    讀寫分離,基本的原理是讓主數(shù)據(jù)庫處理事務(wù)性增、改、刪操作(INSERT、UPDATE、DELETE),而從數(shù)據(jù)庫處理SELECT查詢操作。數(shù)據(jù)庫復(fù)制被用來把事務(wù)性操作導(dǎo)致的變更同步到集群中的從數(shù)據(jù)庫。 因?yàn)閿?shù)據(jù)庫的“寫”(寫10000條數(shù)據(jù)可能要3分鐘)操作是比較耗時(shí)的。 但是數(shù)據(jù)庫

    2024年02月11日
    瀏覽(24)
  • Redis如何實(shí)現(xiàn)主從復(fù)制?有沒有辦法保證數(shù)據(jù)一致性?

    Redis通過主從復(fù)制(Master-Slave Replication)實(shí)現(xiàn)數(shù)據(jù)復(fù)制和高可用性。主節(jié)點(diǎn)負(fù)責(zé)接收和處理寫操作,并將數(shù)據(jù)同步到從節(jié)點(diǎn)上。 主從復(fù)制的實(shí)現(xiàn)步驟如下: 配置主從關(guān)系:在從節(jié)點(diǎn)上的配置文件中配置主節(jié)點(diǎn)的IP地址和端口號(hào)。 從節(jié)點(diǎn)連接主節(jié)點(diǎn):從節(jié)點(diǎn)啟動(dòng)時(shí)會(huì)自動(dòng)連接主

    2024年02月13日
    瀏覽(20)
  • 【數(shù)據(jù)庫】詳解數(shù)據(jù)庫架構(gòu)優(yōu)化思路(兩主架構(gòu)、主從復(fù)制、冷熱分離)

    【數(shù)據(jù)庫】詳解數(shù)據(jù)庫架構(gòu)優(yōu)化思路(兩主架構(gòu)、主從復(fù)制、冷熱分離)

    對(duì)數(shù)據(jù)庫架構(gòu)進(jìn)行優(yōu)化是為了提高數(shù)據(jù)庫系統(tǒng)的性能、可擴(kuò)展性、穩(wěn)定性和可維護(hù)性。MySQL官方說:?jiǎn)伪?000萬數(shù)據(jù),性能就達(dá)到瓶頸了,為了保證查詢效率需要讓每張表的大小得到控制。 再來說,為什么要提高查詢效率呢? 除了普通的用戶查詢操作,增、刪、改操作都包含

    2024年02月11日
    瀏覽(22)
  • Mysql數(shù)據(jù)庫--實(shí)現(xiàn)主從復(fù)制搭建與同步

    Mysql數(shù)據(jù)庫--實(shí)現(xiàn)主從復(fù)制搭建與同步

    一般數(shù)據(jù)庫都是讀取壓力大于寫數(shù)據(jù)壓力,主從復(fù)制即為了實(shí)現(xiàn)數(shù)據(jù)庫的負(fù)載均衡和讀寫分離。通過將Mysql的某一臺(tái)主機(jī)的數(shù)據(jù)復(fù)制到其它主機(jī)(slaves)上,主服務(wù)器只負(fù)責(zé)寫,而從服務(wù)器只負(fù)責(zé)讀。 如生產(chǎn)環(huán)境中,使用redis數(shù)據(jù)庫作為緩存數(shù)據(jù)庫,用戶訪問業(yè)務(wù)數(shù)據(jù)時(shí),先

    2024年02月08日
    瀏覽(95)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包