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

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

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

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

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

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

1. 核心原理

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

2. 搭建步驟與配置

以下以單機偽集群為例,在一臺服務器上啟動3個Redis實例(1個主節(jié)點,2個從節(jié)點)。

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

# 端口
port 6379
# 后臺運行
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é)點1配置 (redis-slave1.conf):

# 端口
port 6380
# 后臺運行
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é)點
replicaof 127.0.0.1 6379
# 主節(jié)點密碼(如果設置了)
masterauth 123456

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

# 端口
port 6381
# 后臺運行
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é)點
replicaof 127.0.0.1 6379
# 主節(jié)點密碼(如果設置了)
masterauth 123456

3. 啟動服務

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. 驗證主從關系

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

5. 全量復制與增量復制對比

二、哨兵模式 (Sentinel)

哨兵模式在主從復制的基礎上增加了高可用(HA)能力。通過多個哨兵進程監(jiān)控主從節(jié)點,當主節(jié)點故障時,哨兵會自動選舉一個從節(jié)點升級為新的主節(jié)點,并通知其他從節(jié)點切換主節(jié)點,實現(xiàn)故障轉移。

1. 核心原理

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

2. 搭建步驟與配置

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

主節(jié)點配置 (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"
# 設置密碼(可選)
requirepass 123456

從節(jié)點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é)點
replicaof 127.0.0.1 6379
# 如果主節(jié)點有密碼
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é)點
sentinel monitor mymaster 127.0.0.1 6379 2
# 密碼(如果主節(jié)點有)
sentinel auth-pass mymaster 123456
# 故障轉移超時時間
sentinel down-after-milliseconds mymaster 5000
# 故障轉移后最多保留的失敗次數(shù)
sentinel failover-timeout mymaster 10000
# 故障轉移時最多同時遷移的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. 啟動服務

# 啟動Redis節(jié)點
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
# 啟動哨兵
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. 測試故障轉移

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

三、官方集群 (Redis Cluster)

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

1. 核心原理

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

2. 搭建步驟與配置

以單機偽集群為例,部署3個主節(jié)點和3個從節(jié)點。

主節(jié)點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
# 關閉集群完整性檢查(單機測試)
cluster-require-full-coverage no

從節(jié)點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é)點
replicaof 127.0.0.1 7000

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

3. 啟動服務

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)建集群

# 進入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í)行命令后,會提示輸入 `yes` 來確認分配哈希槽和創(chuàng)建集群。

5. 連接集群

# 使用 -c 參數(shù)連接集群
redis-cli -c -p 7000
# 設置key
127.0.0.1:7000> set name "redis-cluster"
# 讀取key(可能重定向到其他節(jié)點)
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>

四、總結與對比

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

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

相關文章

  • Redis Set 集合的實例詳解

    Redis Set 集合的實例詳解

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

    redis哈希和集合_動力節(jié)點Java學院整理

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

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

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

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

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

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

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

    鹤山市| 英超| 根河市| 泽普县| 襄樊市| 白银市| 贵南县| 栾城县| 夏河县| 新昌县| 定远县| 康马县| 丹寨县| 湖州市| 壤塘县| 永登县| 常熟市| 德令哈市| 澄迈县| 黔江区| 榆社县| 开平市| 阳西县| 新巴尔虎左旗| 河津市| 湟源县| 永年县| 沭阳县| 黄骅市| 平湖市| 衡东县| 萍乡市| 盐边县| 阜新市| 谷城县| 莒南县| 易门县| 正镶白旗| 凯里市| 长丰县| 上饶县|