亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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ò)展性差等問題,限制了它在高可用性和高擴(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)則通過同步主節(jié)點(diǎn)的數(shù)據(jù)來進(jìn)行數(shù)據(jù)備份和提供讀操作服務(wù)。

2、工作原理

  • 主節(jié)點(diǎn)(Master)是數(shù)據(jù)的來源節(jié)點(diǎn),所有寫操作都首先執(zhí)行在主節(jié)點(diǎn)上。
  • 從節(jié)點(diǎn)(Slave)通過復(fù)制主節(jié)點(diǎn)的數(shù)據(jù)來保證數(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)的端口。通過這行配置,從節(jié)點(diǎn)會(huì)自動(dòng)與主節(jié)點(diǎn)建立連接,開始同步數(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)故障問題,Redis引入了哨兵模式。Redis哨兵是一個(gè)高可用解決方案,通過自動(dòng)故障轉(zhuǎn)移和主從監(jiān)控來保證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)功能,客戶端可以通過哨兵獲取到當(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ì)開始接收寫操作,其他從節(jié)點(diǎn)會(huì)開始同步新的主節(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),無需人工干預(yù),保證了系統(tǒng)的高可用性。
  • 高可用性:多個(gè)哨兵節(jié)點(diǎn)提供了高可靠性,避免了單個(gè)哨兵故障導(dǎo)致的影響。
  • 服務(wù)發(fā)現(xiàn):哨兵能夠動(dòng)態(tài)地向客戶端提供當(dāng)前的主節(jié)點(diǎn)信息,確??蛻舳丝偸窃L問到最新的主節(jié)點(diǎn)。

缺點(diǎn)

  • 復(fù)雜性高:哨兵模式相比單純的主從復(fù)制更加復(fù)雜,配置和運(yùn)維難度較大。
  • 故障恢復(fù)時(shí)間較長(zhǎng):雖然哨兵能夠自動(dòng)故障轉(zhuǎn)移,但在發(fā)生故障時(shí),故障轉(zhuǎn)移的過程仍然會(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)證哨兵模式

可以通過以下命令查看哨兵的狀態(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工具來創(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)

通過以下命令來驗(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í)間的要求來決定。

  • 主從復(fù)制 適用于讀操作較多,寫操作較少的場(chǎng)景,能夠有效實(shí)現(xiàn)讀寫分離,提高系統(tǒng)性能。
  • 哨兵模式 通過自動(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實(shí)現(xiàn)延時(shí)任務(wù)的解決方案

    使用Redis實(shí)現(xiàn)延時(shí)任務(wù)的解決方案

    這篇文章主要介紹了使用Redis實(shí)現(xiàn)延時(shí)任務(wù)的解決方案,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • k8s部署redis遠(yuǎn)程連接的項(xiàng)目實(shí)踐

    k8s部署redis遠(yuǎn)程連接的項(xiàng)目實(shí)踐

    本文主要介紹了k8s部署redis遠(yuǎn)程連接的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • muduo源碼分析之TcpServer模塊詳細(xì)介紹

    muduo源碼分析之TcpServer模塊詳細(xì)介紹

    這篇文章主要介紹了muduo源碼分析之TcpServer模塊,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • 基于Redis實(shí)現(xiàn)抽獎(jiǎng)功能及問題小結(jié)

    基于Redis實(shí)現(xiàn)抽獎(jiǎng)功能及問題小結(jié)

    這篇文章主要介紹了基于Redis實(shí)現(xiàn)抽獎(jiǎng)功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Redis中Scan命令的基本使用教程

    Redis中Scan命令的基本使用教程

    這篇文章主要給大家介紹了關(guān)于Redis中Scan命令的基本使用教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Redis 安裝 redistimeseries.so(時(shí)間序列數(shù)據(jù)類型)的配置步驟

    Redis 安裝 redistimeseries.so(時(shí)間序列數(shù)據(jù)類型)的配置步驟

    這篇文章主要介紹了Redis 安裝 redistimeseries.so(時(shí)間序列數(shù)據(jù)類型)詳細(xì)教程,配置步驟需要先下載redistimeseries.so 文件,文中介紹了啟動(dòng)失敗問題排查,需要的朋友可以參考下
    2024-01-01
  • 基于Redis?zSet實(shí)現(xiàn)滑動(dòng)窗口對(duì)短信進(jìn)行防刷限流的問題

    基于Redis?zSet實(shí)現(xiàn)滑動(dòng)窗口對(duì)短信進(jìn)行防刷限流的問題

    這篇文章主要介紹了基于Redis?zSet實(shí)現(xiàn)滑動(dòng)窗口對(duì)短信進(jìn)行防刷限流,主要針對(duì)目前線上短信被腳本惡意盜刷的情況,用Redis實(shí)現(xiàn)滑動(dòng)窗口限流,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-02-02
  • Redis如何批量刪除指定模糊的key舉例

    Redis如何批量刪除指定模糊的key舉例

    在實(shí)際項(xiàng)目中,我們可能需要根據(jù)一定的條件來刪除部分key,這時(shí)候就需要用到模糊刪除操作這,下面篇文章主要給大家介紹了關(guān)于Redis如何批量刪除指定模糊的key的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • 通過prometheus監(jiān)控redis實(shí)時(shí)運(yùn)行狀態(tài)的操作方法

    通過prometheus監(jiān)控redis實(shí)時(shí)運(yùn)行狀態(tài)的操作方法

    本文詳細(xì)介紹了如何通過Prometheus監(jiān)控Redis的運(yùn)行狀態(tài),包括安裝配置Redis、Redis Exporter以及Prometheus,配置Prometheus監(jiān)控Redis指標(biāo),以及常見的Redis指標(biāo)和告警規(guī)則,需要的朋友可以參考下
    2025-02-02
  • Redis數(shù)據(jù)結(jié)構(gòu)SortedSet的底層原理解析

    Redis數(shù)據(jù)結(jié)構(gòu)SortedSet的底層原理解析

    這篇文章主要介紹了Redis數(shù)據(jù)結(jié)構(gòu)SortedSet的底層原理解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評(píng)論