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

Redis高可用-主從復(fù)制、哨兵模式與集群模式詳解

 更新時(shí)間:2025年05月09日 10:56:51   作者:世紀(jì)擺渡人  
這篇文章主要介紹了Redis高可用-主從復(fù)制、哨兵模式與集群模式的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Redis高可用-主從復(fù)制、哨兵模式與集群模式

概要

Redis作為一款內(nèi)存數(shù)據(jù)庫(kù),憑借其極高的性能和豐富的功能,已經(jīng)成為了很多互聯(lián)網(wǎng)應(yīng)用的核心組件。然而,單機(jī)Redis雖然性能卓越,但存在著單點(diǎn)故障、擴(kuò)展性差等問(wèn)題,限制了它在高可用性和高擴(kuò)展性方面的應(yīng)用。

為了提升Redis的可用性和擴(kuò)展性,Redis提供了多種架構(gòu)模式:主從復(fù)制、哨兵模式和集群模式。每種模式都在不同的場(chǎng)景中發(fā)揮著重要作用。

一、主從復(fù)制(Master-Slave Replication)

1、概述

Redis的主從復(fù)制(Master-Slave Replication)是最基礎(chǔ)的高可用架構(gòu)之一。

在這種架構(gòu)中,Redis部署了一個(gè)主節(jié)點(diǎn)和多個(gè)從節(jié)點(diǎn)。

主節(jié)點(diǎn)負(fù)責(zé)處理所有的寫操作(如SET、DEL等),而從節(jié)點(diǎn)則通過(guò)同步主節(jié)點(diǎn)的數(shù)據(jù)來(lái)進(jìn)行數(shù)據(jù)備份和提供讀操作服務(wù)。

2、工作原理

  • 主節(jié)點(diǎn)(Master)是數(shù)據(jù)的來(lái)源節(jié)點(diǎn),所有寫操作都首先執(zhí)行在主節(jié)點(diǎn)上。
  • 從節(jié)點(diǎn)(Slave)通過(guò)復(fù)制主節(jié)點(diǎn)的數(shù)據(jù)來(lái)保證數(shù)據(jù)一致性。從節(jié)點(diǎn)定期從主節(jié)點(diǎn)獲取數(shù)據(jù)的快照(RDB)或增量數(shù)據(jù)(AOF)進(jìn)行同步。
  • 同步方式 從節(jié)點(diǎn)與主節(jié)點(diǎn)之間的同步分為全量同步和增量同步。在第一次連接時(shí),執(zhí)行全量同步,將主節(jié)點(diǎn)的數(shù)據(jù)完整復(fù)制到從節(jié)點(diǎn);后續(xù)的增量同步則只同步主節(jié)點(diǎn)上的變更數(shù)據(jù)。

3、優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  • 讀寫分離:主從復(fù)制可以將讀請(qǐng)求分配到從節(jié)點(diǎn),從而減輕主節(jié)點(diǎn)的壓力,提高系統(tǒng)的并發(fā)能力。
  • 數(shù)據(jù)冗余:從節(jié)點(diǎn)提供了數(shù)據(jù)的備份,增強(qiáng)了系統(tǒng)的容錯(cuò)性。

缺點(diǎn)

  • 單點(diǎn)故障:主節(jié)點(diǎn)故障后,系統(tǒng)會(huì)面臨數(shù)據(jù)不可用的情況。雖然從節(jié)點(diǎn)可以恢復(fù)數(shù)據(jù),但需要手動(dòng)將從節(jié)點(diǎn)提升為主節(jié)點(diǎn)。
  • 同步延遲:主從同步可能存在延遲,尤其是在寫操作頻繁時(shí),從節(jié)點(diǎn)的數(shù)據(jù)同步可能會(huì)滯后,導(dǎo)致讀請(qǐng)求不一致。

4、適用場(chǎng)景

主從復(fù)制適用于讀操作遠(yuǎn)大于寫操作的場(chǎng)景,比如緩存系統(tǒng)、日志系統(tǒng)等。

在這些場(chǎng)景下,可以將從節(jié)點(diǎn)作為讀副本,減少主節(jié)點(diǎn)的壓力,提高讀取性能。

5、配置步驟

5.1 配置主節(jié)點(diǎn)

在Redis中,主節(jié)點(diǎn)默認(rèn)配置就可以作為主節(jié)點(diǎn)工作,因此啟動(dòng)主節(jié)點(diǎn)非常簡(jiǎn)單。

# 啟動(dòng)主節(jié)點(diǎn)
redis-server /etc/redis/redis.conf
5.2 配置從節(jié)點(diǎn)

從節(jié)點(diǎn)的配置稍微復(fù)雜一些,主要是需要告訴Redis自己是一個(gè)從節(jié)點(diǎn),并指定要復(fù)制的主節(jié)點(diǎn)信息。

在從節(jié)點(diǎn)的redis.conf配置文件中添加以下內(nèi)容:

# 配置從節(jié)點(diǎn),指定主節(jié)點(diǎn)
slaveof 192.168.1.1 6379

這里的192.168.1.1是主節(jié)點(diǎn)的IP地址,6379是主節(jié)點(diǎn)的端口。通過(guò)這行配置,從節(jié)點(diǎn)會(huì)自動(dòng)與主節(jié)點(diǎn)建立連接,開(kāi)始同步數(shù)據(jù)。

配置好從節(jié)點(diǎn)后,啟動(dòng)從節(jié)點(diǎn):

# 啟動(dòng)從節(jié)點(diǎn)
redis-server /etc/redis/redis.conf
5.3 驗(yàn)證主從復(fù)制

在主節(jié)點(diǎn)上執(zhí)行INFO replication命令查看復(fù)制狀態(tài):

127.0.0.1:6379> INFO replication
# 輸出:
# role:master
# connected_slaves:1
# slave0:ip=192.168.1.2,port=6379,state=online,offset=12345,lag=0

在從節(jié)點(diǎn)上執(zhí)行相同的命令,查看從節(jié)點(diǎn)的狀態(tài):

127.0.0.1:6380> INFO replication
# 輸出:
# role:slave
# master_host:192.168.1.1
# master_port:6379
# master_link_status:up

二、哨兵模式(Sentinel)

1、概述

為了彌補(bǔ)主從復(fù)制的單點(diǎn)故障問(wèn)題,Redis引入了哨兵模式。Redis哨兵是一個(gè)高可用解決方案,通過(guò)自動(dòng)故障轉(zhuǎn)移和主從監(jiān)控來(lái)保證Redis集群的高可用性。

在哨兵模式下,除了主節(jié)點(diǎn)和從節(jié)點(diǎn)外,還需要部署多個(gè)哨兵節(jié)點(diǎn)(Sentinel)。哨兵節(jié)點(diǎn)的主要職責(zé)包括:

  • 監(jiān)控主節(jié)點(diǎn)和從節(jié)點(diǎn)的健康狀態(tài)。
  • 當(dāng)主節(jié)點(diǎn)宕機(jī)時(shí),自動(dòng)進(jìn)行故障轉(zhuǎn)移,將某個(gè)從節(jié)點(diǎn)提升為主節(jié)點(diǎn)。
  • 在故障恢復(fù)后,更新主從關(guān)系,重新配置從節(jié)點(diǎn)。
  • 提供服務(wù)發(fā)現(xiàn)功能,客戶端可以通過(guò)哨兵獲取到當(dāng)前的主節(jié)點(diǎn)信息。

2、工作原理

  • 監(jiān)控:哨兵節(jié)點(diǎn)周期性地向主節(jié)點(diǎn)和從節(jié)點(diǎn)發(fā)送PING請(qǐng)求,監(jiān)測(cè)節(jié)點(diǎn)的健康狀態(tài)。
  • 故障轉(zhuǎn)移:當(dāng)多個(gè)哨兵節(jié)點(diǎn)確認(rèn)主節(jié)點(diǎn)不可用時(shí),哨兵將自動(dòng)選舉一個(gè)從節(jié)點(diǎn)并將其提升為新的主節(jié)點(diǎn)。之后,新的主節(jié)點(diǎn)會(huì)開(kāi)始接收寫操作,其他從節(jié)點(diǎn)會(huì)開(kāi)始同步新的主節(jié)點(diǎn)數(shù)據(jù)。
  • 配置更新:哨兵節(jié)點(diǎn)會(huì)向所有從節(jié)點(diǎn)廣播新的主節(jié)點(diǎn)信息,從節(jié)點(diǎn)會(huì)自動(dòng)向新的主節(jié)點(diǎn)同步數(shù)據(jù)。

3、優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  • 自動(dòng)故障轉(zhuǎn)移:當(dāng)主節(jié)點(diǎn)發(fā)生故障時(shí),哨兵會(huì)自動(dòng)檢測(cè)并將一個(gè)從節(jié)點(diǎn)提升為主節(jié)點(diǎn),無(wú)需人工干預(yù),保證了系統(tǒng)的高可用性。
  • 高可用性:多個(gè)哨兵節(jié)點(diǎn)提供了高可靠性,避免了單個(gè)哨兵故障導(dǎo)致的影響。
  • 服務(wù)發(fā)現(xiàn):哨兵能夠動(dòng)態(tài)地向客戶端提供當(dāng)前的主節(jié)點(diǎn)信息,確??蛻舳丝偸窃L問(wèn)到最新的主節(jié)點(diǎn)。

缺點(diǎn)

  • 復(fù)雜性高:哨兵模式相比單純的主從復(fù)制更加復(fù)雜,配置和運(yùn)維難度較大。
  • 故障恢復(fù)時(shí)間較長(zhǎng):雖然哨兵能夠自動(dòng)故障轉(zhuǎn)移,但在發(fā)生故障時(shí),故障轉(zhuǎn)移的過(guò)程仍然會(huì)有一定的延遲,導(dǎo)致短時(shí)間內(nèi)系統(tǒng)不可用。

4、適用場(chǎng)景

哨兵模式適用于對(duì)高可用性有較高要求的場(chǎng)景,比如實(shí)時(shí)業(yè)務(wù)系統(tǒng)、在線服務(wù)等。

它能保證Redis集群在主節(jié)點(diǎn)故障時(shí)依然能夠提供穩(wěn)定的服務(wù)。

5、配置步驟

5.1 配置哨兵文件

哨兵的配置通常在sentinel.conf文件中進(jìn)行。在文件中需要指定要監(jiān)控的主節(jié)點(diǎn),設(shè)置監(jiān)控參數(shù)等。

以下是一個(gè)簡(jiǎn)單的sentinel.conf配置文件示例:

# sentinel.conf
port 26379
sentinel monitor mymaster 192.168.1.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
  • sentinel monitor mymaster <master_ip> <master_port> :監(jiān)控名為mymaster的主節(jié)點(diǎn),IP為192.168.1.1,端口為6379,需要至少2個(gè)哨兵確認(rèn)主節(jié)點(diǎn)故障。
  • sentinel down-after-milliseconds mymaster 5000:主節(jié)點(diǎn)在5000毫秒內(nèi)未響應(yīng)時(shí)判定為故障。
  • sentinel failover-timeout mymaster 60000:故障轉(zhuǎn)移的超時(shí)時(shí)間為60秒。

啟動(dòng)哨兵

啟動(dòng)哨兵時(shí),執(zhí)行以下命令:

redis-sentinel /etc/redis/sentinel.conf
5.2 驗(yàn)證哨兵模式

可以通過(guò)以下命令查看哨兵的狀態(tài):

127.0.0.1:26379> INFO sentinel
# 輸出:
# sentinel_masters
# name=mymaster
# ip=192.168.1.1
# port=6379
# quorum=2
# status=ok

三、集群模式(Cluster)

1、概述

對(duì)于需要大規(guī)模分布式部署水平擴(kuò)展的應(yīng)用,Redis提供了集群模式(Redis Cluster)。與主從復(fù)制和哨兵模式不同,Redis集群采用了分片的方式將數(shù)據(jù)分布到多個(gè)節(jié)點(diǎn)上,從而支持更高的數(shù)據(jù)存儲(chǔ)能力和更強(qiáng)的擴(kuò)展性。

Redis集群中,數(shù)據(jù)會(huì)按照**哈希槽(hash slots)**的方式進(jìn)行分配。Redis集群總共有16384個(gè)哈希槽,集群中的每個(gè)節(jié)點(diǎn)負(fù)責(zé)一部分哈希槽。數(shù)據(jù)的分配和管理是自動(dòng)完成的,客戶端可以直接連接到集群中的任何節(jié)點(diǎn),集群會(huì)根據(jù)請(qǐng)求的數(shù)據(jù)哈希值將請(qǐng)求路由到正確的節(jié)點(diǎn)。

2、工作原理

  • 分片:Redis Cluster將所有的鍵值對(duì)按哈希算法分成16384個(gè)哈希槽,并將這些哈希槽分配到多個(gè)節(jié)點(diǎn)上。每個(gè)節(jié)點(diǎn)存儲(chǔ)一部分?jǐn)?shù)據(jù),并負(fù)責(zé)該哈希槽范圍內(nèi)的鍵。
  • 數(shù)據(jù)復(fù)制:每個(gè)主節(jié)點(diǎn)都有一個(gè)或多個(gè)從節(jié)點(diǎn)進(jìn)行數(shù)據(jù)備份,從節(jié)點(diǎn)可以在主節(jié)點(diǎn)故障時(shí)接管。
  • 故障轉(zhuǎn)移:當(dāng)主節(jié)點(diǎn)故障時(shí),集群會(huì)自動(dòng)將該主節(jié)點(diǎn)的從節(jié)點(diǎn)提升為新的主節(jié)點(diǎn),確保數(shù)據(jù)的可用性。

3、優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  • 高擴(kuò)展性:集群模式支持水平擴(kuò)展,可以根據(jù)需要?jiǎng)討B(tài)增加或減少節(jié)點(diǎn),輕松處理海量數(shù)據(jù)。
  • 自動(dòng)故障轉(zhuǎn)移:Redis集群提供了自動(dòng)故障轉(zhuǎn)移機(jī)制,保證節(jié)點(diǎn)宕機(jī)時(shí)系統(tǒng)能夠自動(dòng)恢復(fù)。
  • 分布式存儲(chǔ):數(shù)據(jù)被分片存儲(chǔ)在不同的節(jié)點(diǎn)上,可以支持超大規(guī)模的數(shù)據(jù)存儲(chǔ)。

缺點(diǎn)

  • 復(fù)雜性高:與主從復(fù)制和哨兵模式相比,Redis集群的配置和運(yùn)維復(fù)雜度更高,要求對(duì)分片、數(shù)據(jù)遷移、集群管理等有較深入的理解。
  • 跨節(jié)點(diǎn)操作性能差:如果客戶端的操作涉及多個(gè)哈希槽,Redis集群需要跨節(jié)點(diǎn)進(jìn)行通信,性能會(huì)有所下降。

4、適用場(chǎng)景

集群模式適用于需要大規(guī)模數(shù)據(jù)存儲(chǔ)和高并發(fā)的場(chǎng)景,如社交媒體、電子商務(wù)、廣告投放等場(chǎng)景。

對(duì)于需要支持?jǐn)?shù)十億鍵的數(shù)據(jù)存儲(chǔ)和快速讀寫操作,Redis集群是最合適的架構(gòu)模式。

5、配置步驟

5.1 配置集群節(jié)點(diǎn)

在集群模式下,每個(gè)Redis節(jié)點(diǎn)的配置文件中需要啟用集群相關(guān)的參數(shù):

# redis.conf
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
  • cluster-enabled yes:?jiǎn)⒂眉耗J健?/li>
  • cluster-config-file nodes.conf:指定集群配置文件,保存集群的節(jié)點(diǎn)信息。
  • cluster-node-timeout 5000:設(shè)置節(jié)點(diǎn)超時(shí)時(shí)間。
5.2 啟動(dòng)集群節(jié)點(diǎn)

啟動(dòng)多個(gè)Redis實(shí)例,每個(gè)實(shí)例都要使用上述配置文件。假設(shè)我們有6個(gè)節(jié)點(diǎn)(3個(gè)主節(jié)點(diǎn),3個(gè)從節(jié)點(diǎn)):

# 啟動(dòng)每個(gè)節(jié)點(diǎn)
redis-server /etc/redis/redis.conf
5.3 創(chuàng)建集群

使用redis-cli工具來(lái)創(chuàng)建集群,并為每個(gè)主節(jié)點(diǎn)分配從節(jié)點(diǎn):

# 創(chuàng)建集群
redis-cli --cluster create <node1>:6379 <node2>:6379 <node3>:6379 <node4>:6379 <node5>:6379 <node6>:6379 --cluster-replicas 1

這條命令會(huì)創(chuàng)建一個(gè)包含3個(gè)主節(jié)點(diǎn)和3個(gè)從節(jié)點(diǎn)的集群。

5.4 驗(yàn)證集群狀態(tài)

通過(guò)以下命令來(lái)驗(yàn)證集群狀態(tài):

redis-cli -c -h <node_ip> -p 6379 cluster info

總結(jié)

在Redis的高可用架構(gòu)中,主從復(fù)制、哨兵模式集群模式各自有不同的適用場(chǎng)景和優(yōu)勢(shì)。選擇合適的架構(gòu)模式,需要根據(jù)業(yè)務(wù)的需求、系統(tǒng)規(guī)模、數(shù)據(jù)量和故障恢復(fù)時(shí)間的要求來(lái)決定。

  • 主從復(fù)制 適用于讀操作較多,寫操作較少的場(chǎng)景,能夠有效實(shí)現(xiàn)讀寫分離,提高系統(tǒng)性能。
  • 哨兵模式 通過(guò)自動(dòng)故障轉(zhuǎn)移和監(jiān)控,保障了Redis系統(tǒng)的高可用性,適用于高可用性要求較高的業(yè)務(wù)場(chǎng)景。
  • 集群模式 提供了水平擴(kuò)展的能力,適用于大規(guī)模數(shù)據(jù)存儲(chǔ)和高并發(fā)請(qǐng)求的場(chǎng)景。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • redis的主從配置方法詳解

    redis的主從配置方法詳解

    今天為大家介紹下linux系統(tǒng)下redis的主從配置方法,Linux系統(tǒng)下的redis的主從配置方法非常簡(jiǎn)單下面是具體的操作步驟
    2018-09-09
  • Redis的過(guò)期鍵刪除策略原理說(shuō)明

    Redis的過(guò)期鍵刪除策略原理說(shuō)明

    這篇文章主要介紹了Redis的過(guò)期鍵刪除策略原理說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Redis延遲隊(duì)列的實(shí)現(xiàn)示例

    Redis延遲隊(duì)列的實(shí)現(xiàn)示例

    Redis 延遲隊(duì)列是一種使用 Redis 實(shí)現(xiàn)的消息隊(duì)列,本文主要介紹了Redis延遲隊(duì)列的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Redis中的配置文件,數(shù)據(jù)持久化,事務(wù)

    Redis中的配置文件,數(shù)據(jù)持久化,事務(wù)

    這篇文章主要介紹了Redis中的配置文件,數(shù)據(jù)持久化,事務(wù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2022-12-12
  • Redis結(jié)合 Docker 搭建集群并整合SpringBoot的詳細(xì)過(guò)程

    Redis結(jié)合 Docker 搭建集群并整合SpringBoot的詳細(xì)過(guò)程

    這篇文章主要介紹了Redis結(jié)合Docker搭建集群并整合SpringBoot的詳細(xì)過(guò)程,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • 深入淺析Redis 集群伸縮原理

    深入淺析Redis 集群伸縮原理

    Redis 集群提供了靈活的節(jié)點(diǎn)擴(kuò)容和收縮方案。在不影響集群對(duì)外服務(wù)的情況下,可以為集群添加節(jié)點(diǎn)進(jìn)行擴(kuò)容,也可以下線部分節(jié)點(diǎn)進(jìn)行縮容,接下來(lái)通過(guò)本文給大家分享Redis 集群伸縮原理,感興趣的朋友一起看看吧
    2021-05-05
  • Redis高可用之持久化

    Redis高可用之持久化

    在web服務(wù)器中,高可用是指服務(wù)器可以正常訪問(wèn)的時(shí)間,衡量的標(biāo)準(zhǔn)是在多長(zhǎng)時(shí)間內(nèi)可以提供正常服務(wù)(99.9%、99.99%、99.999%等等),Redis中,實(shí)現(xiàn)高可用的技術(shù)主要包括持久化、主從復(fù)制、哨兵和cluster集群,感興趣的同學(xué)可以閱讀本文
    2023-04-04
  • 單線程Redis快的4 個(gè)原因總結(jié)

    單線程Redis快的4 個(gè)原因總結(jié)

    作為內(nèi)存中數(shù)據(jù)存儲(chǔ),Redis 以其速度和性能著稱,通常被用作大多數(shù)后端服務(wù)的緩存解決方案,但是,在內(nèi)部,Redis 采用單線程架構(gòu),為什么單線程設(shè)計(jì)依然會(huì)有這么高的性能,在本文中,讓我們深入探討為什么 Redis 才有單線程架構(gòu)
    2023-07-07
  • 緩存擊穿中邏輯過(guò)期和單純互斥鎖的區(qū)別及說(shuō)明

    緩存擊穿中邏輯過(guò)期和單純互斥鎖的區(qū)別及說(shuō)明

    本文介紹了兩種緩存過(guò)期策略:邏輯過(guò)期加互斥鎖和單純互斥鎖,邏輯過(guò)期加互斥鎖解決了緩存擊穿問(wèn)題,避免了大量請(qǐng)求同時(shí)更新數(shù)據(jù)庫(kù),單純互斥鎖在緩存過(guò)期后會(huì)刪除緩存并等待鎖釋放,邏輯過(guò)期更適合對(duì)實(shí)時(shí)性要求不高的場(chǎng)景,而單純互斥鎖則適用于對(duì)實(shí)時(shí)性要求高的場(chǎng)景
    2026-02-02
  • 深入理解Redis內(nèi)存回收和內(nèi)存淘汰機(jī)制

    深入理解Redis內(nèi)存回收和內(nèi)存淘汰機(jī)制

    Redis使用多種過(guò)期策略和內(nèi)存淘汰機(jī)制來(lái)管理內(nèi)存,本文主要介紹了深入理解Redis內(nèi)存回收和內(nèi)存淘汰機(jī)制, 具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06

最新評(píng)論

大方县| 临邑县| 宣威市| 沙坪坝区| 临桂县| 广宗县| 瑞昌市| 佛冈县| 徐州市| 襄樊市| 沙坪坝区| 宜黄县| 扶沟县| 龙胜| 揭西县| 浦江县| 上高县| 天全县| 闽侯县| 商城县| 宕昌县| 厦门市| 精河县| 庆云县| 喀喇| 龙山县| 阿鲁科尔沁旗| 杭锦后旗| 灵武市| 新和县| 武清区| 岚皋县| 齐齐哈尔市| 锡林浩特市| 谢通门县| 梅州市| 金门县| 彩票| 东阳市| 永兴县| 额尔古纳市|