欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文帶你深入理解Redis的主從架構(gòu)

 更新時(shí)間:2023年09月12日 09:59:27   作者:半畝方塘立身  
Redis主從架構(gòu)是一種分布式數(shù)據(jù)庫(kù)架構(gòu),它包括一個(gè)主節(jié)點(diǎn)(Master)和一個(gè)或多個(gè)從節(jié)點(diǎn)(Slave),主節(jié)點(diǎn)處理所有寫(xiě)操作,從節(jié)點(diǎn)負(fù)責(zé)復(fù)制主節(jié)點(diǎn)的數(shù)據(jù)并處理讀請(qǐng)求,本文將帶大家深入理解Redis主從架構(gòu),需要的朋友可以參考下

Redis主從架構(gòu)概述

Redis主從架構(gòu)是一種分布式數(shù)據(jù)庫(kù)架構(gòu),它包括一個(gè)主節(jié)點(diǎn)(Master)和一個(gè)或多個(gè)從節(jié)點(diǎn)(Slave)。主節(jié)點(diǎn)處理所有寫(xiě)操作,從節(jié)點(diǎn)負(fù)責(zé)復(fù)制主節(jié)點(diǎn)的數(shù)據(jù)并處理讀請(qǐng)求。以下是主從架構(gòu)的核心組件:

主節(jié)點(diǎn)(Master):

  • 主節(jié)點(diǎn)是Redis集群的核心,負(fù)責(zé)處理所有寫(xiě)操作。
  • 客戶端連接到主節(jié)點(diǎn),并向其發(fā)送寫(xiě)請(qǐng)求。
  • 主節(jié)點(diǎn)將寫(xiě)操作同步到所有連接的從節(jié)點(diǎn),以保持?jǐn)?shù)據(jù)一致性。

從節(jié)點(diǎn)(Slave):

  • 從節(jié)點(diǎn)是主節(jié)點(diǎn)的復(fù)制品,其數(shù)據(jù)與主節(jié)點(diǎn)保持同步。
  • 從節(jié)點(diǎn)可以處理讀操作,但不允許進(jìn)行寫(xiě)操作(只讀)。
  • 如果主節(jié)點(diǎn)不可用,可以將從節(jié)點(diǎn)提升為新的主節(jié)點(diǎn)。

主從同步步驟

具體步驟如下:

1、從節(jié)點(diǎn)根據(jù)自身狀態(tài),發(fā)送 psync命令給 master:

  • 如果從實(shí)例從未執(zhí)行過(guò) replicaof ,則從節(jié)點(diǎn)發(fā)送 psync ? -1,代表全量,從 -1 處開(kāi)始復(fù)制。
  • 如果從節(jié)點(diǎn)之前執(zhí)行過(guò) replicaof,則取當(dāng)前實(shí)例中記錄下 runID和 offset,執(zhí)行命令 psync <runID> <offset>, runID 是主節(jié)點(diǎn) runID,offset 是復(fù)制偏移量。

2、主節(jié)點(diǎn)根據(jù)接收到的psync命令及當(dāng)前服務(wù)器狀態(tài),決定執(zhí)行全量復(fù)制還是部分復(fù)制:

  • 對(duì)比主、從節(jié)點(diǎn)的 runID 一致,且從節(jié)點(diǎn)發(fā)送 slave_repl_offset 之后的數(shù)據(jù)在 repl_backlog_buffer緩沖區(qū)中均存在(隊(duì)列是環(huán)形的,有可能被擦除重寫(xiě)了),則回復(fù) CONTINUE,代表以追加模式進(jìn)行部分復(fù)制。

  • runID 與從節(jié)點(diǎn)發(fā)送的 runID 不同,或者從節(jié)點(diǎn)發(fā)送的 slave_repl_offset 之后的數(shù)據(jù)已不在主節(jié)點(diǎn)的 repl_backlog_buffer緩沖區(qū)中 (因?yàn)殛?duì)列是環(huán)形的,所以等待時(shí)間太長(zhǎng)或者有斷連的情況,有可能被擦除重寫(xiě)了),則回復(fù)從節(jié)點(diǎn) FULLRESYNC <runid> <offset>,表示要進(jìn)行全量復(fù)制,同時(shí)記下主節(jié)點(diǎn)的 runID 和offset。日志如下:

repl_backlog_buffer:它是為了從庫(kù)斷開(kāi)之后,如何找到主從差異數(shù)據(jù)而設(shè)計(jì)的環(huán)形緩沖區(qū),從而避免全量復(fù)制帶來(lái)的性能開(kāi)銷(xiāo)。如果從庫(kù)斷開(kāi)時(shí)間太久,repl_backlog_buffer環(huán)形緩沖區(qū)被主庫(kù)的寫(xiě)命令覆蓋了,那么從庫(kù)連上主庫(kù)后只能乖乖地進(jìn)行一次全量復(fù)制,所以repl_backlog_buffer配置盡量大一些,可以降低主從斷開(kāi)后全量復(fù)制的概率。而在repl_backlog_buffer中找主從差異的數(shù)據(jù)后,如何發(fā)給從庫(kù)呢?這就用到了replication buffer

replication buffer:Redis和客戶端通信也好,和從庫(kù)通信也好,Redis都需要給分配一個(gè) 內(nèi)存buffer進(jìn)行數(shù)據(jù)交互,客戶端是一個(gè)client,從庫(kù)也是一個(gè)client,我們每個(gè)client連上Redis后,Redis都會(huì)分配一個(gè)client buffer,所有數(shù)據(jù)交互都是通過(guò)這個(gè)buffer進(jìn)行的:Redis先把數(shù)據(jù)寫(xiě)到這個(gè)buffer中,然后再把buffer中的數(shù)據(jù)發(fā)到client socket中再通過(guò)網(wǎng)絡(luò)發(fā)送出去,這樣就完成了數(shù)據(jù)交互。所以主從在增量同步時(shí),從庫(kù)作為一個(gè)client,也會(huì)分配一個(gè)buffer,只不過(guò)這個(gè)buffer專(zhuān)門(mén)用來(lái)傳播用戶的寫(xiě)命令到從庫(kù),保證主從數(shù)據(jù)一致,我們通常把它叫做replication buffer

repl_backlog_size環(huán)形緩沖區(qū)寫(xiě)滿之后,從庫(kù)是會(huì)丟失掉那部分被覆蓋掉的數(shù)據(jù),還是直接進(jìn)行全量復(fù)制

  • 一個(gè)從庫(kù)如果和主庫(kù)斷連時(shí)間過(guò)長(zhǎng),造成它在主庫(kù)repl_backlog_bufferslave_repl_offset位置上的數(shù)據(jù)已經(jīng)被覆蓋掉了,此時(shí)從庫(kù)和主庫(kù)間將進(jìn)行全量復(fù)制。
  • 每個(gè)從庫(kù)會(huì)記錄自己的slave_repl_offset,每個(gè)從庫(kù)的復(fù)制進(jìn)度也不一定相同。在和主庫(kù)重連進(jìn)行恢復(fù)時(shí),從庫(kù)會(huì)通過(guò)psync命令把自己記錄的slave_repl_offset發(fā)給主庫(kù),主庫(kù)會(huì)根據(jù)從庫(kù)各自的復(fù)制進(jìn)度,來(lái)決定這個(gè)從庫(kù)可以進(jìn)行增量復(fù)制,還是全量復(fù)制。

主從架構(gòu)的優(yōu)勢(shì)

Redis主從架構(gòu)具有多個(gè)關(guān)鍵優(yōu)勢(shì):

  • 高可用性:通過(guò)故障轉(zhuǎn)移機(jī)制,Redis主從架構(gòu)提供了高可用性。如果主節(jié)點(diǎn)出現(xiàn)故障,可以快速切換到一個(gè)從節(jié)點(diǎn),幾乎沒(méi)有停機(jī)時(shí)間。

  • 讀寫(xiě)分離:Redis主從架構(gòu)允許從節(jié)點(diǎn)處理讀操作,從而減輕了主節(jié)點(diǎn)的讀負(fù)載,提高了整體性能。

  • 數(shù)據(jù)冗余:從節(jié)點(diǎn)是主節(jié)點(diǎn)的復(fù)制,提供了數(shù)據(jù)冗余。即使主節(jié)點(diǎn)出現(xiàn)問(wèn)題,數(shù)據(jù)仍然可用。

  • 靈活性:可以根據(jù)需要擴(kuò)展從節(jié)點(diǎn),以處理更多的讀請(qǐng)求,從而提高系統(tǒng)的擴(kuò)展性。

如何搭建Redis主從架構(gòu)

本地搭建可以參考:Docker Compose搭建Redis主從復(fù)制環(huán)境的實(shí)現(xiàn)步驟_docker_腳本之家 (jb51.net)

要搭建Redis主從架構(gòu),需要執(zhí)行以下步驟:

  • 安裝和配置Redis:在主節(jié)點(diǎn)和從節(jié)點(diǎn)上安裝Redis,并配置它們的redis.conf文件,確保允許數(shù)據(jù)復(fù)制。

  • 啟動(dòng)主節(jié)點(diǎn):首先啟動(dòng)主節(jié)點(diǎn),確保其正常運(yùn)行。

  • 啟動(dòng)從節(jié)點(diǎn):?jiǎn)?dòng)從節(jié)點(diǎn),并在配置文件中指定主節(jié)點(diǎn)的IP地址和端口。這個(gè)跟MySQL很類(lèi)似。

replicaof <masterip> <masterport>
  • 數(shù)據(jù)同步:從節(jié)點(diǎn)會(huì)自動(dòng)連接到主節(jié)點(diǎn)并請(qǐng)求數(shù)據(jù)復(fù)制。可以使用INFO replication命令檢查復(fù)制狀態(tài)。

  • 測(cè)試和監(jiān)控:驗(yàn)證主從架構(gòu)是否正常工作,監(jiān)控主節(jié)點(diǎn)和從節(jié)點(diǎn)的性能和狀態(tài)。

結(jié)論

Redis主從架構(gòu)是一種強(qiáng)大的架構(gòu)模式,可用于提高Redis數(shù)據(jù)庫(kù)的可用性、性能和可擴(kuò)展性。它通過(guò)將寫(xiě)操作集中在主節(jié)點(diǎn)上,同時(shí)允許多個(gè)從節(jié)點(diǎn)處理讀操作,為應(yīng)對(duì)高負(fù)載和故障提供了解決方案。通過(guò)了解Redis主從架構(gòu)的工作原理和配置方法,可以更好地利用Redis來(lái)構(gòu)建強(qiáng)大的應(yīng)用程序和服務(wù)。

以上就是一文帶你深入理解Redis的主從架構(gòu)的詳細(xì)內(nèi)容,更多關(guān)于Redis主從架構(gòu)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring?redis使用報(bào)錯(cuò)Read?timed?out排查及解決過(guò)程

    Spring?redis使用報(bào)錯(cuò)Read?timed?out排查及解決過(guò)程

    項(xiàng)目使用spring集成redis,偶爾會(huì)出現(xiàn)read timed out的情況,剛開(kāi)始以為是網(wǎng)絡(luò)不穩(wěn)定引起的,后面發(fā)現(xiàn)影響業(yè)務(wù)測(cè)試的準(zhǔn)確性,這篇文章主要給大家介紹了關(guān)于Spring redis使用報(bào)錯(cuò)Read timed out排查及解決過(guò)程的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • redis事務(wù)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    redis事務(wù)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了redis事務(wù),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • Redis筆記點(diǎn)贊排行榜的實(shí)現(xiàn)示例

    Redis筆記點(diǎn)贊排行榜的實(shí)現(xiàn)示例

    探店筆記類(lèi)似點(diǎn)評(píng)網(wǎng)站的評(píng)價(jià),本文主要介紹了Redis筆記點(diǎn)贊排行榜的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Govern Service 基于 Redis 的服務(wù)治理平臺(tái)安裝過(guò)程詳解

    Govern Service 基于 Redis 的服務(wù)治理平臺(tái)安裝過(guò)程詳解

    Govern Service 是一個(gè)輕量級(jí)、低成本的服務(wù)注冊(cè)、服務(wù)發(fā)現(xiàn)、 配置服務(wù) SDK,通過(guò)使用現(xiàn)有基礎(chǔ)設(shè)施中的 Redis 不用給運(yùn)維部署帶來(lái)額外的成本與負(fù)擔(dān),接下來(lái)通過(guò)本文給大家分享Govern Service 基于 Redis 的服務(wù)治理平臺(tái)的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2021-05-05
  • Redis特殊數(shù)據(jù)類(lèi)型HyperLogLog基數(shù)統(tǒng)計(jì)算法講解

    Redis特殊數(shù)據(jù)類(lèi)型HyperLogLog基數(shù)統(tǒng)計(jì)算法講解

    這篇文章主要為大家介紹了Redis特殊數(shù)據(jù)類(lèi)型HyperLogLog基數(shù)統(tǒng)計(jì)算法講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Redis 的查詢很快的原因解析及Redis 如何保證查詢的高效

    Redis 的查詢很快的原因解析及Redis 如何保證查詢的高效

    由于redis是內(nèi)存數(shù)據(jù)庫(kù),歸功于它的數(shù)據(jù)結(jié)構(gòu)所以查詢效率非常高,今天通過(guò)本文給大家介紹下Redis 的查詢很快的原因解析及Redis 如何保證查詢的高效,感興趣的朋友一起看看吧
    2022-03-03
  • 詳解redis數(shù)據(jù)結(jié)構(gòu)之sds

    詳解redis數(shù)據(jù)結(jié)構(gòu)之sds

    sds是Simple Dynamic String的縮寫(xiě),譯為簡(jiǎn)單動(dòng)態(tài)字符串,redis使用該結(jié)構(gòu)保存字符串,不同于c中的字符串,redis使用該結(jié)構(gòu)來(lái)更方便的進(jìn)行字符串的處理,需要的朋友可以參考下
    2017-05-05
  • Redis的鍵String全面詳解

    Redis的鍵String全面詳解

    這篇文章主要為大家介紹了Redis的鍵String全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Redis 緩存實(shí)現(xiàn)存儲(chǔ)和讀取歷史搜索關(guān)鍵字的操作方法

    Redis 緩存實(shí)現(xiàn)存儲(chǔ)和讀取歷史搜索關(guān)鍵字的操作方法

    這篇文章主要介紹了Redis 緩存實(shí)現(xiàn)存儲(chǔ)和讀取歷史搜索關(guān)鍵字,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • redis鍵值出現(xiàn)\xac\xed\x00\x05t\x00&的問(wèn)題及解決

    redis鍵值出現(xiàn)\xac\xed\x00\x05t\x00&的問(wèn)題及解決

    這篇文章主要介紹了redis鍵值出現(xiàn)\xac\xed\x00\x05t\x00&的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評(píng)論