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

詳解Redis主從復(fù)制實(shí)踐

 更新時(shí)間:2021年05月19日 11:24:13   作者:華為云開(kāi)發(fā)者社區(qū)  
本文將演示主從復(fù)制如何配置、實(shí)現(xiàn)以及實(shí)現(xiàn)原理,Redis主從復(fù)制三大策略,全量復(fù)制、部分復(fù)制和立即復(fù)制。

復(fù)制簡(jiǎn)介

Redis 作為一門(mén)非關(guān)系型數(shù)據(jù)庫(kù),其復(fù)制功能和關(guān)系型數(shù)據(jù)庫(kù)(MySQL)來(lái)說(shuō),功能其實(shí)都是差不多,無(wú)外乎就是實(shí)現(xiàn)的原理不同。Redis 的復(fù)制功能也是相對(duì)于其他的內(nèi)存性數(shù)據(jù)庫(kù)(memcached)所具備特有的功能。

Redis 復(fù)制功能主要的作用,是集群、分片功能實(shí)現(xiàn)的基礎(chǔ);同時(shí)也是 Redis 實(shí)現(xiàn)高可用的一種策略,例如解決單機(jī)并發(fā)問(wèn)題、數(shù)據(jù)安全性等等問(wèn)題。

服務(wù)介紹

在本文環(huán)境演示中,有一臺(tái)主機(jī),啟動(dòng)了兩個(gè) Redis 示例。

實(shí)現(xiàn)方式

Redis 復(fù)制實(shí)現(xiàn)方式分為下面三種方式:

1. 服務(wù)啟動(dòng)時(shí)配置

該方式通過(guò)在啟動(dòng) Redis 服務(wù)時(shí),通過(guò)命令行參數(shù),進(jìn)行啟動(dòng)主從復(fù)制功能。該方式的弊端是不能實(shí)現(xiàn)配置持久化,當(dāng)服務(wù)停掉之后,啟動(dòng)服務(wù)時(shí),需要添加相同的命令參數(shù)。

1.1 master 服務(wù)器事先在 redis.confg 增加 requirepass 項(xiàng)。

requirepass 6379

1.2 啟動(dòng)從服務(wù)器。

redis-server --port 6380 --replicaof 192.168.2.102 6379

2. 命令行配置

該方式通過(guò)使用 redis-cli 進(jìn)入操作行界面,進(jìn)行配置。該方式的弊端是不能實(shí)現(xiàn)配置持久化,當(dāng)服務(wù)停掉之后,啟動(dòng)服務(wù)需要執(zhí)行同樣的命令。

2.1 master 服務(wù)器執(zhí)行。

127.0.0.1:6379> config set requirepass 6379
OK

2.2 從服務(wù)器執(zhí)行。

127.0.0.1:6380> replicaof 192.168.2.102 6379
OK
127.0.0.1:6380> config set masterauth 6379
OK

3. 配置文件配置

該方式是通過(guò) redis.conf 配置文件進(jìn)行設(shè)置,能夠?qū)崿F(xiàn)配置的持久化,是一種推薦使用的方式。

3.1 配置主服務(wù)器,redis.config。

requirepass 6379

3.2 配置從服務(wù)器,redis.config。

masterauth 6379
replicaof 192.168.2.102 6379

4.配置說(shuō)明

1.masterauth:設(shè)置 redis.confi 連接密碼,如果設(shè)置了該值。其他客戶端在連接該服務(wù)器時(shí),需要添加密碼才可以訪問(wèn)。

2.requirepass:設(shè)置主服務(wù)器的連接密碼,和 1 中 masterauth 一致。

3.replicaof:從服務(wù)器連接到服務(wù)器的 IP 地址+端口號(hào)。

效果測(cè)試

1.主服務(wù)器添加數(shù)據(jù)

2.從服務(wù)器獲取數(shù)據(jù)

實(shí)現(xiàn)原理

// uml圖

@startuml

從服務(wù)器->主服務(wù)器: 1.保存配置

從服務(wù)器->主服務(wù)器: 2.建立socket連接

從服務(wù)器->主服務(wù)器: 3.發(fā)送ping命令

從服務(wù)器->主服務(wù)器: 4.權(quán)限驗(yàn)證

從服務(wù)器->主服務(wù)器: 5.同步數(shù)據(jù)

從服務(wù)器->主服務(wù)器: 6.持續(xù)復(fù)制數(shù)據(jù)

@enduml

主從復(fù)制主要實(shí)現(xiàn)的一個(gè)流程如上圖:

1.第一步,從服務(wù)器保存主服務(wù)器的配置信息,保存之后待從服務(wù)器內(nèi)部的定時(shí)器執(zhí)行時(shí),就會(huì)觸發(fā)復(fù)制的流程。

2.第二步,從服務(wù)器首先會(huì)與主服務(wù)器建立一個(gè)socket套字節(jié)連接,用作主從通信使用。后面主服務(wù)器發(fā)送數(shù)據(jù)給從服務(wù)器也是通過(guò)該套字節(jié)進(jìn)行。

3.第三步,socket套字節(jié)連接成功之后,接著發(fā)送鑒權(quán)ping命令,正常的情況下,主服務(wù)器會(huì)發(fā)送對(duì)應(yīng)的響應(yīng)。ping命令的作用是為了,保證socket套字節(jié)是否可以用,同時(shí)也是為了驗(yàn)證主服務(wù)器是否接受操作命令。

4.第四步,接著就是鑒權(quán)驗(yàn)證,判斷從節(jié)點(diǎn)配置的主節(jié)點(diǎn)連接密碼是否正確。

5.第五步,鑒權(quán)成功之后,就可以開(kāi)始復(fù)制數(shù)據(jù)了。主服務(wù)器此時(shí)會(huì)進(jìn)行全量復(fù)制,將主服務(wù)的數(shù)據(jù)全部發(fā)給從服務(wù)器,從服務(wù)器保存主服務(wù)器發(fā)送的數(shù)據(jù)。

6.接下來(lái)就是持續(xù)復(fù)制操作。主服務(wù)器會(huì)進(jìn)行異步復(fù)制,一邊將寫(xiě)的數(shù)據(jù)寫(xiě)入自身,同時(shí)會(huì)將新的寫(xiě)命令發(fā)送給從服務(wù)器。

實(shí)現(xiàn)策略

Redis主從復(fù)制主要分為三種弄策略方式,不同的策略方式都是針對(duì)不同的場(chǎng)景下進(jìn)行使用。三種場(chǎng)景方式分別如下:

1.全量復(fù)制

全量復(fù)制用在主從復(fù)制剛建立時(shí)或者從切主服務(wù)器時(shí),從服務(wù)器沒(méi)有主服務(wù)器的數(shù)據(jù),主服務(wù)器會(huì)將自身的數(shù)據(jù)通過(guò)rdb文件方式發(fā)送給從服務(wù)器,從服務(wù)器會(huì)清空自身數(shù)據(jù),接著將主服務(wù)器發(fā)送的數(shù)據(jù)加載到自身中。

// uml圖

@startuml

從服務(wù)器->主服務(wù)器: 1.psync ? -1

主服務(wù)器->從服務(wù)器: 2.fullsync runid offset

從服務(wù)器: 3.保存 runid offset

主服務(wù)器: 4.執(zhí)行bgsave生成rdb

主服務(wù)器->從服務(wù)器: 5.發(fā)送rdb

從服務(wù)器: 6.清空自身老數(shù)據(jù)

從服務(wù)器: 7.加載主服務(wù)器數(shù)據(jù)

@enduml

2.部分復(fù)制

部分復(fù)制用在一些異常情況下,例如主從延遲、從服務(wù)宕機(jī)之后重新啟動(dòng)接收主服務(wù)器發(fā)送的部分?jǐn)?shù)據(jù)。

部分復(fù)制的實(shí)現(xiàn)主要依賴于復(fù)制緩存區(qū)、主服務(wù)的runid、主從服務(wù)器各自的復(fù)制偏移量(offset)。

復(fù)制緩存區(qū):主服務(wù)在接收寫(xiě)命令時(shí),會(huì)將命令寫(xiě)入緩存區(qū),以便從服務(wù)器在異常情況下,減少數(shù)據(jù)的丟失。當(dāng)從服務(wù)器正常連接之后,主服務(wù)器會(huì)將緩存區(qū)內(nèi)的數(shù)據(jù)發(fā)送給從服務(wù)器。這里的緩存區(qū)是一個(gè)長(zhǎng)隊(duì)列。

主服務(wù)器runid:主服務(wù)器會(huì)在每次服務(wù)啟動(dòng)之后,會(huì)生成一個(gè)唯一的ID,作為自身標(biāo)識(shí)。從服務(wù)器會(huì)將該標(biāo)識(shí)保存起來(lái),發(fā)送部分復(fù)制命令時(shí),會(huì)使用該runid。

psync runid offset

主從復(fù)制各自偏移量:主從服務(wù)在建立復(fù)制之后,都會(huì)有自身的偏移量。從節(jié)點(diǎn)會(huì)每秒鐘發(fā)送自身復(fù)制的偏移量給從節(jié)點(diǎn),主節(jié)點(diǎn)在發(fā)送寫(xiě)命令之后,從節(jié)點(diǎn)也會(huì)增加自身的復(fù)制偏移量。主節(jié)點(diǎn)在每次進(jìn)行了寫(xiě)命令之后,也會(huì)增加自身的偏移量。這里的偏移量是通過(guò)命令的字節(jié)長(zhǎng)度累加計(jì)算。

3.異步復(fù)制

異步復(fù)制是針對(duì)主從建立復(fù)制關(guān)系之后,主從服務(wù)器持續(xù)保持復(fù)制關(guān)系。

場(chǎng)景問(wèn)題

1.數(shù)據(jù)安全

// 從服務(wù)器只讀
replica-read-only yes
// 從服務(wù)器連接密碼
masterauth

2.數(shù)據(jù)延遲

默認(rèn)的情況下主節(jié)點(diǎn)存在新數(shù)據(jù)不會(huì)立即發(fā)送給從服務(wù)器,如果開(kāi)啟,則會(huì)理解發(fā)送給從服務(wù)器。默認(rèn)的時(shí)間拒絕與Linux內(nèi)核。

// 復(fù)制延遲
repl-disable-tcp-nodelay yes

3.主從節(jié)點(diǎn)連接狀態(tài)

主從節(jié)點(diǎn)一旦建立連接之后,會(huì)定時(shí)模擬成對(duì)方的客戶端,檢測(cè)對(duì)方的服務(wù)狀態(tài)。主節(jié)點(diǎn)可以通過(guò)設(shè)置repl-ping-replica-period配置參數(shù)進(jìn)行設(shè)置。默認(rèn)的頻率是10s。

從節(jié)點(diǎn)咋執(zhí)行replconf ack {offsetid}時(shí),也會(huì)將自身的復(fù)制偏移量發(fā)送給主服務(wù)器,主服務(wù)根據(jù)偏移量進(jìn)行判斷數(shù)據(jù)延遲。存在數(shù)據(jù)延遲就會(huì)從復(fù)制積壓緩沖區(qū)的數(shù)據(jù)匯中,將對(duì)應(yīng)的數(shù)據(jù)補(bǔ)發(fā)給從節(jié)點(diǎn)。

以上就是詳解Redis主從復(fù)制實(shí)踐的詳細(xì)內(nèi)容,更多關(guān)于Redis主從復(fù)制實(shí)踐的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 安裝redis(windows和Ubuntu)詳解

    安裝redis(windows和Ubuntu)詳解

    這篇文章主要介紹了Redis在Ubuntu和Windows下的安裝,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python的Flask框架使用Redis做數(shù)據(jù)緩存的配置方法

    Python的Flask框架使用Redis做數(shù)據(jù)緩存的配置方法

    Redis數(shù)據(jù)庫(kù)依賴于主存,在關(guān)系型數(shù)據(jù)庫(kù)以外再配套R(shí)edis管理緩存數(shù)據(jù)將對(duì)性能會(huì)有很大的提升,這里我們就來(lái)看一下Python的Flask框架使用Redis做數(shù)據(jù)緩存的配置方法
    2016-06-06
  • redis分布式鎖實(shí)現(xiàn)示例

    redis分布式鎖實(shí)現(xiàn)示例

    本文主要介紹了redis分布式鎖實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • Redis刪除某個(gè)目錄下的數(shù)據(jù)的實(shí)現(xiàn)

    Redis刪除某個(gè)目錄下的數(shù)據(jù)的實(shí)現(xiàn)

    本文介紹了如何在Redis中刪除指定目錄下的數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-09-09
  • Redis的數(shù)據(jù)過(guò)期策略和數(shù)據(jù)淘汰策略

    Redis的數(shù)據(jù)過(guò)期策略和數(shù)據(jù)淘汰策略

    本文主要介紹了Redis的數(shù)據(jù)過(guò)期策略和數(shù)據(jù)淘汰策略,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • Redis+threading實(shí)現(xiàn)多線程消息隊(duì)列的使用示例

    Redis+threading實(shí)現(xiàn)多線程消息隊(duì)列的使用示例

    Redis多線程消息隊(duì)列是一種使用Redis作為存儲(chǔ)后端的消息隊(duì)列實(shí)現(xiàn),它利用Redis的線程并發(fā)處理能力來(lái)提高消息隊(duì)列的處理效率,本文主要介紹了Redis+threading實(shí)現(xiàn)多線程消息隊(duì)列的使用示例,感興趣的可以了解一下
    2023-12-12
  • Windows下注冊(cè)Redis服務(wù)失敗的解決方案

    Windows下注冊(cè)Redis服務(wù)失敗的解決方案

    在Windows系統(tǒng)中,有時(shí)候我們需要將Redis作為一個(gè)服務(wù)運(yùn)行,以便于在后臺(tái)長(zhǎng)期運(yùn)行并提供服務(wù),本篇技術(shù)博客文章將為你解答在Windows下注冊(cè)Redis服務(wù)失敗的一些常見(jiàn)問(wèn)題,并提供相應(yīng)的解決方案,需要的朋友可以參考下
    2024-11-11
  • redis中的常用5大數(shù)據(jù)類型

    redis中的常用5大數(shù)據(jù)類型

    這篇文章主要介紹了redis中的常用5大數(shù)據(jù)類型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Redis并發(fā)訪問(wèn)問(wèn)題詳細(xì)講解

    Redis并發(fā)訪問(wèn)問(wèn)題詳細(xì)講解

    本文主要介紹了Redis如何應(yīng)對(duì)并發(fā)訪問(wèn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-12-12
  • Redis中過(guò)期鍵刪除的三種方法

    Redis中過(guò)期鍵刪除的三種方法

    Redis中可以設(shè)置鍵的過(guò)期時(shí)間,并且通過(guò)取出過(guò)期字典(expires dict)中鍵的過(guò)期時(shí)間和當(dāng)前時(shí)間比較來(lái)判斷是否過(guò)期,那么一個(gè)過(guò)期的鍵是怎么被刪除的呢?本文給大家總結(jié)了三種方法,選了其中兩種給大家詳細(xì)的介紹一下,需要的朋友可以參考下
    2024-05-05

最新評(píng)論

桂阳县| 龙游县| 北流市| 太白县| 黄陵县| 南充市| 乐安县| 赤峰市| 晋城| 龙陵县| 淄博市| 伊通| 乐昌市| 静乐县| 凌云县| 东乡族自治县| 正安县| 大庆市| 大邑县| 玛纳斯县| 长乐市| 镇坪县| 建阳市| 武宣县| 毕节市| 旬邑县| 伊金霍洛旗| 莎车县| 靖州| 大港区| 通化县| 九江县| 富川| 红桥区| 无棣县| 张家界市| 乐都县| 静安区| 朝阳区| 定襄县| 新龙县|