最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文帶你深入理解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)處理所有寫操作,從節(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)處理所有寫操作,從節(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é)處理所有寫操作。
  • 客戶端連接到主節(jié)點(diǎn),并向其發(fā)送寫請(qǐng)求。
  • 主節(jié)點(diǎn)將寫操作同步到所有連接的從節(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)行寫操作(只讀)。
  • 如果主節(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 處開始復(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)形的,有可能被擦除重寫了),則回復(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)或者有斷連的情況,有可能被擦除重寫了),則回復(fù)從節(jié)點(diǎn) FULLRESYNC <runid> <offset>,表示要進(jìn)行全量復(fù)制,同時(shí)記下主節(jié)點(diǎn)的 runID 和offset。日志如下:

repl_backlog_buffer:它是為了從庫(kù)斷開之后,如何找到主從差異數(shù)據(jù)而設(shè)計(jì)的環(huán)形緩沖區(qū),從而避免全量復(fù)制帶來(lái)的性能開銷。如果從庫(kù)斷開時(shí)間太久,repl_backlog_buffer環(huán)形緩沖區(qū)被主庫(kù)的寫命令覆蓋了,那么從庫(kù)連上主庫(kù)后只能乖乖地進(jìn)行一次全量復(fù)制,所以repl_backlog_buffer配置盡量大一些,可以降低主從斷開后全量復(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ù)寫到這個(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專門用來(lái)傳播用戶的寫命令到從庫(kù),保證主從數(shù)據(jù)一致,我們通常把它叫做replication buffer。

repl_backlog_size環(huán)形緩沖區(qū)寫滿之后,從庫(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í)間。

  • 讀寫分離: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很類似。

replicaof <masterip> <masterport>
  • 數(shù)據(jù)同步:從節(jié)點(diǎn)會(huì)自動(dòng)連接到主節(jié)點(diǎn)并請(qǐng)求數(shù)據(jù)復(fù)制??梢允褂?code>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ò)將寫操作集中在主節(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)文章

  • Redis內(nèi)存回收用法及說(shuō)明

    Redis內(nèi)存回收用法及說(shuō)明

    Redis通過(guò)配置文件設(shè)置最大內(nèi)存空間,當(dāng)達(dá)到上限時(shí),會(huì)使用過(guò)期策略和淘汰策略來(lái)管理內(nèi)存,過(guò)期策略包括惰性刪除和周期刪除,而淘汰策略則根據(jù)內(nèi)存使用情況主動(dòng)刪除部分key以釋放空間
    2025-12-12
  • Redis事務(wù),Redis實(shí)現(xiàn)悲觀鎖,樂(lè)觀鎖方式

    Redis事務(wù),Redis實(shí)現(xiàn)悲觀鎖,樂(lè)觀鎖方式

    文章介紹了Redis事務(wù)的概念、特點(diǎn)和執(zhí)行過(guò)程,區(qū)別于MySQL事務(wù)的ACID特性,詳細(xì)講解了未授權(quán)讀取、授權(quán)讀取、重復(fù)讀取和串行化四種隔離級(jí)別,并解析了悲觀鎖和樂(lè)觀鎖的定義與應(yīng)用場(chǎng)景,最后闡述了Redis通過(guò)版本號(hào)實(shí)現(xiàn)樂(lè)觀鎖的機(jī)制
    2026-05-05
  • Redis密碼在springboot中自定義加解密實(shí)踐

    Redis密碼在springboot中自定義加解密實(shí)踐

    文章介紹了在Spring?Boot項(xiàng)目中自定義配置Redis密碼的加解密方法,通過(guò)在`application.yml`文件中配置信息,并在`RedisConfig`類中實(shí)現(xiàn)加解密邏輯
    2026-01-01
  • Redis高級(jí)用法以及golang代碼示例

    Redis高級(jí)用法以及golang代碼示例

    Redis是一個(gè)遠(yuǎn)程內(nèi)存數(shù)據(jù)庫(kù),它不僅性能強(qiáng)勁,而且還具有復(fù)制特性以及為解決問(wèn)題而生的獨(dú)一無(wú)二的數(shù)據(jù)模型,這篇文章主要介紹了Redis高級(jí)用法以及golang代碼示例的相關(guān)資料,需要的朋友可以參考下
    2026-01-01
  • 基于Redis有序集合實(shí)現(xiàn)滑動(dòng)窗口限流的步驟

    基于Redis有序集合實(shí)現(xiàn)滑動(dòng)窗口限流的步驟

    滑動(dòng)窗口算法是一種基于時(shí)間窗口的限流算法,通過(guò)動(dòng)態(tài)地滑動(dòng)窗口,可以動(dòng)態(tài)調(diào)整限流的速率,Redis有序集合可以用來(lái)實(shí)現(xiàn)滑動(dòng)窗口限流,本文介紹基于Redis有序集合實(shí)現(xiàn)滑動(dòng)窗口限流,感興趣的朋友一起看看吧
    2024-12-12
  • 基于Redis6.2.6版本部署Redis?Cluster集群的問(wèn)題

    基于Redis6.2.6版本部署Redis?Cluster集群的問(wèn)題

    這篇文章主要介紹了基于Redis6.2.6版本部署Redis?Cluster集群,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • Redis字符串原理的深入理解

    Redis字符串原理的深入理解

    這篇文章主要給大家介紹了關(guān)于Redis字符串原理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 深入理解redis刪除策略和淘汰策略

    深入理解redis刪除策略和淘汰策略

    每隔一段時(shí)間就掃描一定數(shù)據(jù)的設(shè)置了過(guò)期時(shí)間的key,并清除其中已過(guò)期的keys,本文主要介紹了深入理解redis刪除策略和淘汰策略,感興趣的可以了解一下
    2024-08-08
  • Redis異步隊(duì)列的實(shí)現(xiàn)及應(yīng)用場(chǎng)景

    Redis異步隊(duì)列的實(shí)現(xiàn)及應(yīng)用場(chǎng)景

    異步隊(duì)列是一種底層基于異步 I/O 模型的消息隊(duì)列,用于在分布式系統(tǒng)中進(jìn)行同步和異步的通訊和協(xié)作,本文主要介紹了Redis異步隊(duì)列的實(shí)現(xiàn)及應(yīng)用場(chǎng)景,感興趣的可以了解一下
    2023-12-12
  • Redis+Caffeine多級(jí)緩存數(shù)據(jù)一致性解決方案

    Redis+Caffeine多級(jí)緩存數(shù)據(jù)一致性解決方案

    兩級(jí)緩存Redis+Caffeine可以解決緩存雪等問(wèn)題也可以提高接口的性能,但是可能會(huì)出現(xiàn)緩存一致性問(wèn)題,如果數(shù)據(jù)頻繁的變更,可能會(huì)導(dǎo)致Redis和Caffeine數(shù)據(jù)不一致的問(wèn)題,所以本文給大家介紹了Redis+Caffeine多級(jí)緩存數(shù)據(jù)一致性解決方案,需要的朋友可以參考下
    2024-12-12

最新評(píng)論

高邮市| 铜梁县| 体育| 桑日县| 津市市| 郁南县| 汶川县| 湖北省| 农安县| 峨山| 禄丰县| 乳山市| 朝阳县| 息烽县| 平陆县| 砀山县| 沐川县| 隆化县| 舒城县| 汉寿县| 红原县| 台中县| 赤城县| 台安县| 虹口区| 宜春市| 蓬莱市| 济源市| 武鸣县| 谷城县| 来凤县| 亳州市| 太湖县| 山东省| 南城县| 郎溪县| 遂川县| 榆树市| 唐山市| 永丰县| 渑池县|