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

深入剖析 Redis 的三種集群方式以及實(shí)戰(zhàn)配置

 更新時(shí)間:2026年03月25日 10:27:18   作者:Thomas.Sir  
本文深入解析Redis三種集群部署方式,文章包含完整的配置示例和操作指南,為Redis集群部署提供實(shí)用參考,感興趣的朋友跟隨小編一起看看吧

Redis作為高性能內(nèi)存數(shù)據(jù)庫,其集群化部署是解決單節(jié)點(diǎn)性能瓶頸與實(shí)現(xiàn)高可用的關(guān)鍵。本篇將深入剖析三種主流的集群方式:主從復(fù)制、哨兵模式(Sentinel)與官方集群(Cluster),并為您提供詳細(xì)的搭建指南與配置示例。

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

主從復(fù)制是最基礎(chǔ)的集群模式,通過一個(gè)主節(jié)點(diǎn)(Master)和一個(gè)或多個(gè)從節(jié)點(diǎn)(Slave)實(shí)現(xiàn)讀寫分離。主節(jié)點(diǎn)負(fù)責(zé)處理寫操作,從節(jié)點(diǎn)負(fù)責(zé)處理讀操作,并實(shí)時(shí)從主節(jié)點(diǎn)同步數(shù)據(jù)。

1. 核心原理

  • 數(shù)據(jù)同步 :從節(jié)點(diǎn)啟動(dòng)后,向主節(jié)點(diǎn)發(fā)送 `SYNC` 命令。主節(jié)點(diǎn)執(zhí)行 `bgsave` 生成RDB快照并發(fā)送給從節(jié)點(diǎn),同時(shí)將快照期間的寫命令記錄到復(fù)制積壓緩沖區(qū)。從節(jié)點(diǎn)加載RDB并執(zhí)行緩沖區(qū)中的命令,完成初始化同步。
  • 增量同步 :初始化后,主節(jié)點(diǎn)每次執(zhí)行的寫命令都會(huì)同步發(fā)送給從節(jié)點(diǎn),實(shí)現(xiàn)增量同步。

2. 搭建步驟與配置

以下以單機(jī)偽集群為例,在一臺(tái)服務(wù)器上啟動(dòng)3個(gè)Redis實(shí)例(1個(gè)主節(jié)點(diǎn),2個(gè)從節(jié)點(diǎn))。

主節(jié)點(diǎn)配置 (redis-master.conf):

# 端口
port 6379
# 后臺(tái)運(yùn)行
daemonize yes
# PID文件
pidfile /var/run/redis_6379.pid
# 日志文件
logfile "/usr/local/redis-cluster/logs/redis_6379.log"
# 工作目錄
dir /usr/local/redis-cluster/data
# 持久化
dbfilename dump-6379.rdb
# 開啟AOF
appendonly yes
appendfilename "appendonly-6379.aof"

從節(jié)點(diǎn)1配置 (redis-slave1.conf):

# 端口
port 6380
# 后臺(tái)運(yùn)行
daemonize yes
# PID文件
pidfile /var/run/redis_6380.pid
# 日志文件
logfile "/usr/local/redis-cluster/logs/redis_6380.log"
# 工作目錄
dir /usr/local/redis-cluster/data
# 持久化
dbfilename dump-6380.rdb
# 開啟AOF
appendonly yes
appendfilename "appendonly-6380.aof"
# 指定主節(jié)點(diǎn)
replicaof 127.0.0.1 6379
# 主節(jié)點(diǎn)密碼(如果設(shè)置了)
masterauth 123456

從節(jié)點(diǎn)2配置 (redis-slave2.conf):

# 端口
port 6381
# 后臺(tái)運(yùn)行
daemonize yes
# PID文件
pidfile /var/run/redis_6381.pid
# 日志文件
logfile "/usr/local/redis-cluster/logs/redis_6381.log"
# 工作目錄
dir /usr/local/redis-cluster/data
# 持久化
dbfilename dump-6381.rdb
# 開啟AOF
appendonly yes
appendfilename "appendonly-6381.aof"
# 指定主節(jié)點(diǎn)
replicaof 127.0.0.1 6379
# 主節(jié)點(diǎn)密碼(如果設(shè)置了)
masterauth 123456

3. 啟動(dòng)服務(wù)

redis-server /usr/local/redis-cluster/conf/redis-master.conf
redis-server /usr/local/redis-cluster/conf/redis-slave1.conf
redis-server /usr/local/redis-cluster/conf/redis-slave2.conf

4. 驗(yàn)證主從關(guān)系

# 連接主節(jié)點(diǎn)
redis-cli -p 6379
127.0.0.1:6379> info replication
# 連接從節(jié)點(diǎn)
redis-cli -p 6380
127.0.0.1:6380> info replication

5. 全量復(fù)制與增量復(fù)制對(duì)比

二、哨兵模式 (Sentinel)

哨兵模式在主從復(fù)制的基礎(chǔ)上增加了高可用(HA)能力。通過多個(gè)哨兵進(jìn)程監(jiān)控主從節(jié)點(diǎn),當(dāng)主節(jié)點(diǎn)故障時(shí),哨兵會(huì)自動(dòng)選舉一個(gè)從節(jié)點(diǎn)升級(jí)為新的主節(jié)點(diǎn),并通知其他從節(jié)點(diǎn)切換主節(jié)點(diǎn),實(shí)現(xiàn)故障轉(zhuǎn)移。

1. 核心原理

  • 監(jiān)控 :哨兵進(jìn)程持續(xù)監(jiān)控主節(jié)點(diǎn)和從節(jié)點(diǎn)的健康狀態(tài)。
  • 通知 :當(dāng)某個(gè)節(jié)點(diǎn)(主或從)出現(xiàn)故障時(shí),哨兵會(huì)向系統(tǒng)管理員發(fā)送通知。
  • 故障轉(zhuǎn)移 :當(dāng)主節(jié)點(diǎn)故障時(shí),哨兵會(huì)選舉一個(gè)從節(jié)點(diǎn)成為新的主節(jié)點(diǎn),并讓其他從節(jié)點(diǎn)指向新的主節(jié)點(diǎn)。

2. 搭建步驟與配置

同樣以單機(jī)偽集群為例,部署1個(gè)主節(jié)點(diǎn)、2個(gè)從節(jié)點(diǎn)和3個(gè)哨兵節(jié)點(diǎn)。

主節(jié)點(diǎn)配置 (redis-master.conf):

port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile "/usr/local/redis-cluster/logs/redis_6379.log"
dir /usr/local/redis-cluster/data
dbfilename dump-6379.rdb
appendonly yes
appendfilename "appendonly-6379.aof"
# 設(shè)置密碼(可選)
requirepass 123456

從節(jié)點(diǎn)1配置 (redis-slave1.conf):

port 6380
daemonize yes
pidfile /var/run/redis_6380.pid
logfile "/usr/local/redis-cluster/logs/redis_6380.log"
dir /usr/local/redis-cluster/data
dbfilename dump-6380.rdb
appendonly yes
appendfilename "appendonly-6380.aof"
# 指向主節(jié)點(diǎn)
replicaof 127.0.0.1 6379
# 如果主節(jié)點(diǎn)有密碼
masterauth 123456

哨兵1配置 (sentinel1.conf):

port 26379
daemonize yes
pidfile /var/run/redis-sentinel_26379.pid
logfile "/usr/local/redis-cluster/logs/sentinel_26379.log"
dir /usr/local/redis-cluster/data
# 監(jiān)控主節(jié)點(diǎn)
sentinel monitor mymaster 127.0.0.1 6379 2
# 密碼(如果主節(jié)點(diǎn)有)
sentinel auth-pass mymaster 123456
# 故障轉(zhuǎn)移超時(shí)時(shí)間
sentinel down-after-milliseconds mymaster 5000
# 故障轉(zhuǎn)移后最多保留的失敗次數(shù)
sentinel failover-timeout mymaster 10000
# 故障轉(zhuǎn)移時(shí)最多同時(shí)遷移的key數(shù)量
sentinel parallel-syncs mymaster 1

哨兵2配置 (sentinel2.conf):

port 26380
daemonize yes
pidfile /var/run/redis-sentinel_26380.pid
logfile "/usr/local/redis-cluster/logs/sentinel_26380.log"
dir /usr/local/redis-cluster/data
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
sentinel parallel-syncs mymaster 1

哨兵3配置 (sentinel3.conf):

port 26381
daemonize yes
pidfile /var/run/redis-sentinel_26381.pid
logfile "/usr/local/redis-cluster/logs/sentinel_26381.log"
dir /usr/local/redis-cluster/data
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
sentinel parallel-syncs mymaster 1

3. 啟動(dòng)服務(wù)

# 啟動(dòng)Redis節(jié)點(diǎn)
redis-server /usr/local/redis-cluster/conf/redis-master.conf
redis-server /usr/local/redis-cluster/conf/redis-slave1.conf
redis-server /usr/local/redis-cluster/conf/redis-slave2.conf
# 啟動(dòng)哨兵
redis-sentinel /usr/local/redis-cluster/conf/sentinel1.conf
redis-sentinel /usr/local/redis-cluster/conf/sentinel2.conf
redis-sentinel /usr/local/redis-cluster/conf/sentinel3.conf
            

4. 測(cè)試故障轉(zhuǎn)移

# 連接哨兵查看主節(jié)點(diǎn)
redis-cli -p 26379
127.0.0.1:26379> sentinel master mymaster
# 關(guān)閉主節(jié)點(diǎn)
redis-cli -p 6379 shutdown
# 等待哨兵選舉后,再次查看
127.0.0.1:26379> sentinel master mymaster

三、官方集群 (Redis Cluster)

Redis Cluster是官方提供的分布式解決方案,通過數(shù)據(jù)分片(Sharding)解決單節(jié)點(diǎn)內(nèi)存限制問題,并內(nèi)置高可用能力。它不需要中間件,節(jié)點(diǎn)間直接通信。

1. 核心原理

  • 數(shù)據(jù)分片 :Redis Cluster將16384個(gè)哈希槽(Hash Slot)分布在多個(gè)主節(jié)點(diǎn)上。
  • 哈希槽分配 :每個(gè)鍵通過CRC16算法計(jì)算后對(duì)16384取模,決定其所在的哈希槽。
  • 高可用 :每個(gè)主節(jié)點(diǎn)都綁定一個(gè)或多個(gè)從節(jié)點(diǎn)。當(dāng)主節(jié)點(diǎn)故障時(shí),從節(jié)點(diǎn)會(huì)升級(jí)為新的主節(jié)點(diǎn)。

2. 搭建步驟與配置

以單機(jī)偽集群為例,部署3個(gè)主節(jié)點(diǎn)和3個(gè)從節(jié)點(diǎn)。

主節(jié)點(diǎn)1配置 (redis-7000.conf):

port 7000
daemonize yes
pidfile /var/run/redis_7000.pid
logfile "/usr/local/redis-cluster/logs/redis_7000.log"
dir /usr/local/redis-cluster/data
dbfilename dump-7000.rdb
appendonly yes
appendfilename "appendonly-7000.aof"
# 開啟集群模式
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
# 關(guān)閉集群完整性檢查(單機(jī)測(cè)試)
cluster-require-full-coverage no

從節(jié)點(diǎn)1配置 (redis-7003.conf):

port 7003
daemonize yes
pidfile /var/run/redis_7003.pid
logfile "/usr/local/redis-cluster/logs/redis_7003.log"
dir /usr/local/redis-cluster/data
dbfilename dump-7003.rdb
appendonly yes
appendfilename "appendonly-7003.aof"
# 開啟集群模式
cluster-enabled yes
cluster-config-file nodes-7003.conf
cluster-node-timeout 5000
# 指定主節(jié)點(diǎn)
replicaof 127.0.0.1 7000

依次創(chuàng)建 `redis-7001.conf`, `redis-7002.conf`, `redis-7004.conf`, `redis-7005.conf`, `redis-7006.conf`,并修改端口號(hào)。

3. 啟動(dòng)服務(wù)

redis-server /usr/local/redis-cluster/conf/redis-7000.conf
redis-server /usr/local/redis-cluster/conf/redis-7001.conf
redis-server /usr/local/redis-cluster/conf/redis-7002.conf
redis-server /usr/local/redis-cluster/conf/redis-7003.conf
redis-server /usr/local/redis-cluster/conf/redis-7004.conf
redis-server /usr/local/redis-cluster/conf/redis-7005.conf
redis-server /usr/local/redis-cluster/conf/redis-7006.conf

4. 創(chuàng)建集群

# 進(jìn)入Redis源碼目錄
cd /path/to/redis-5.0.5/src
# 使用官方工具創(chuàng)建集群
./redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1

執(zhí)行命令后,會(huì)提示輸入 `yes` 來確認(rèn)分配哈希槽和創(chuàng)建集群。

5. 連接集群

# 使用 -c 參數(shù)連接集群
redis-cli -c -p 7000
# 設(shè)置key
127.0.0.1:7000> set name "redis-cluster"
# 讀取key(可能重定向到其他節(jié)點(diǎn))
127.0.0.1:7000> get name
-> Redirected to slot [12182] located at 127.0.0.1:7002
"redis-cluster"
127.0.0.1:7002>

四、總結(jié)與對(duì)比

特性主從復(fù)制哨兵模式官方集群
讀寫分離???
數(shù)據(jù)分片???
高可用?? (自動(dòng)故障轉(zhuǎn)移)? (內(nèi)置)
部署復(fù)雜度
適用場(chǎng)景讀多寫少、簡(jiǎn)單擴(kuò)展需要高可用、讀寫分離大數(shù)據(jù)量、高并發(fā)

到此這篇關(guān)于深入剖析 Redis 的三種集群方式以及實(shí)戰(zhàn)配置的文章就介紹到這了,更多相關(guān)Redis 三種集群內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Redis Set 集合的實(shí)例詳解

    Redis Set 集合的實(shí)例詳解

    這篇文章主要介紹了 Redis Set 集合的實(shí)例詳解的相關(guān)資料,Redis的Set是string類型的無序集合。集合成員是唯一的,并且不重復(fù),需要的朋友可以參考下
    2017-08-08
  • redis哈希和集合_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    redis哈希和集合_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了redis哈希和集合的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • redis-cli創(chuàng)建redis集群的實(shí)現(xiàn)

    redis-cli創(chuàng)建redis集群的實(shí)現(xiàn)

    本文主要介紹了redis-cli創(chuàng)建redis集群的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • 使用Grafana監(jiān)控Redis的操作方法

    使用Grafana監(jiān)控Redis的操作方法

    這篇文章主要介紹了使用Grafana監(jiān)控Redis,號(hào)稱下一代可視化監(jiān)控系統(tǒng),結(jié)合SpringBoot使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • Redis鎖的過期時(shí)間小于業(yè)務(wù)的執(zhí)行時(shí)間如何續(xù)期

    Redis鎖的過期時(shí)間小于業(yè)務(wù)的執(zhí)行時(shí)間如何續(xù)期

    本文主要介紹了Redis鎖的過期時(shí)間小于業(yè)務(wù)的執(zhí)行時(shí)間如何續(xù)期,Redisson它能給Redis分布式鎖實(shí)現(xiàn)過期時(shí)間自動(dòng)續(xù)期,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • 最新評(píng)論

    江门市| 左贡县| 义乌市| 鄂托克前旗| 环江| 静乐县| 扬州市| 崇义县| 武汉市| 绩溪县| 凤城市| 柯坪县| 富顺县| 凤台县| 乐都县| 漯河市| 无极县| 攀枝花市| 永善县| 吉安县| 桃园市| 秦安县| 竹山县| 徐水县| 筠连县| 多伦县| 广汉市| 高台县| 明溪县| 蓬安县| 金湖县| 广东省| 贵德县| 邢台县| 扶余县| 定南县| 焦作市| 扶绥县| 宜州市| 桂林市| 县级市|