首页 > 数据库 >Redis三种集群方式详解与实战配置

Redis三种集群方式详解与实战配置

来源:互联网 2026-07-10 08:41:13

Redis集群化部署的三种主流方式:主从复制实现读写分离,哨兵模式在复制基础上增加高可用故障转移能力,官方集群通过哈希槽分片解决内存限制并内置高可用。三种方案均提供详细配置示例与搭建步骤,适用于不同场景的性能与可靠性需求。

Redis作为高性能内存数据库,其集群化部署是解决单节点性能瓶颈与实现高可用的关键。本文深入剖析三种主流集群方式:主从复制、哨兵模式(Sentinel)与官方集群(Cluster),并提供详细的搭建指南与配置示例。

一、主从复制(Master-Slave Replication)

主从复制是最基础的集群模式,通过一个主节点(Master)和一个或多个从节点(Slave)实现读写分离。主节点负责写操作,从节点负责读操作,并实时从主节点同步数据。

长期稳定更新的攒劲资源: >>>点此立即查看<<<

1. 核心原理

  • 数据同步:从节点启动后,向主节点发送 SYNC 命令。主节点执行 bgsave 生成RDB快照并发送给从节点,同时将快照期间的写命令记录到复制积压缓冲区。从节点加载RDB并执行缓冲区中的命令,完成初始化同步。
  • 增量同步:初始化后,主节点每次执行的写命令都会同步发送给从节点,实现增量同步。

2. 搭建步骤与配置

以单机伪集群为例,在一台服务器上启动3个Redis实例(1个主节点,2个从节点)。

主节点配置(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# 开启AOFappendonly yesappendfilename "appendonly-6379.aof"

从节点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# 开启AOFappendonly yesappendfilename "appendonly-6380.aof"# 指定主节点replicaof 127.0.0.1 6379# 主节点密码(如果设置了)masterauth 123456

从节点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# 开启AOFappendonly yesappendfilename "appendonly-6381.aof"# 指定主节点replicaof 127.0.0.1 6379# 主节点密码(如果设置了)masterauth 123456

3. 启动服务

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

4. 验证主从关系

# 连接主节点redis-cli -p 6379127.0.0.1:6379> info replication# 连接从节点redis-cli -p 6380127.0.0.1:6380> info replication

5. 全量复制与增量复制对比

Redis三种集群方式详解与实战配置

二、哨兵模式(Sentinel)

哨兵模式在主从复制基础上增加高可用(HA)能力。通过多个哨兵进程监控主从节点,当主节点故障时,哨兵自动选举一个从节点升级为新的主节点,并通知其他从节点切换主节点,实现故障转移。

Redis三种集群方式详解与实战配置

1. 核心原理

  • 监控:哨兵进程持续监控主节点和从节点的健康状态。
  • 通知:当某个节点(主或从)出现故障时,哨兵会向系统管理员发送通知。
  • 故障转移:当主节点故障时,哨兵会选举一个从节点成为新的主节点,并让其他从节点指向新的主节点。

2. 搭建步骤与配置

以单机伪集群为例,部署1个主节点、2个从节点和3个哨兵节点。

主节点配置(redis-master.conf):

port 6379daemonize yespidfile /var/run/redis_6379.pidlogfile "/usr/local/redis-cluster/logs/redis_6379.log"dir /usr/local/redis-cluster/datadbfilename dump-6379.rdbappendonly yesappendfilename "appendonly-6379.aof"# 设置密码(可选)requirepass 123456

从节点1配置(redis-slave1.conf):

port 6380daemonize yespidfile /var/run/redis_6380.pidlogfile "/usr/local/redis-cluster/logs/redis_6380.log"dir /usr/local/redis-cluster/datadbfilename dump-6380.rdbappendonly yesappendfilename "appendonly-6380.aof"# 指向主节点replicaof 127.0.0.1 6379# 如果主节点有密码masterauth 123456

哨兵1配置(sentinel1.conf):

port 26379daemonize yespidfile /var/run/redis-sentinel_26379.pidlogfile "/usr/local/redis-cluster/logs/sentinel_26379.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# 故障转移时最多同时迁移的key数量sentinel parallel-syncs mymaster 1

哨兵2配置(sentinel2.conf):

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

哨兵3配置(sentinel3.conf):

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

3. 启动服务

# 启动Redis节点redis-server /usr/local/redis-cluster/conf/redis-master.confredis-server /usr/local/redis-cluster/conf/redis-slave1.confredis-server /usr/local/redis-cluster/conf/redis-slave2.conf# 启动哨兵redis-sentinel /usr/local/redis-cluster/conf/sentinel1.confredis-sentinel /usr/local/redis-cluster/conf/sentinel2.confredis-sentinel /usr/local/redis-cluster/conf/sentinel3.conf            

4. 测试故障转移

# 连接哨兵查看主节点redis-cli -p 26379127.0.0.1:26379> sentinel master mymaster# 关闭主节点redis-cli -p 6379 shutdown# 等待哨兵选举后,再次查看127.0.0.1:26379> sentinel master mymaster

三、官方集群(Redis Cluster)

Redis Cluster是官方提供的分布式解决方案,通过数据分片(Sharding)解决单节点内存限制问题,并内置高可用能力。它不需要中间件,节点间直接通信。

1. 核心原理

  • 数据分片:Redis Cluster将16384个哈希槽(Hash Slot)分布在多个主节点上。
  • 哈希槽分配:每个键通过CRC16算法计算后对16384取模,决定其所在的哈希槽。
  • 高可用:每个主节点都绑定一个或多个从节点。当主节点故障时,从节点会升级为新的主节点。

2. 搭建步骤与配置

以单机伪集群为例,部署3个主节点和3个从节点。

主节点1配置(redis-7000.conf):

port 7000daemonize yespidfile /var/run/redis_7000.pidlogfile "/usr/local/redis-cluster/logs/redis_7000.log"dir /usr/local/redis-cluster/datadbfilename dump-7000.rdbappendonly yesappendfilename "appendonly-7000.aof"# 开启集群模式cluster-enabled yescluster-config-file nodes-7000.confcluster-node-timeout 5000# 关闭集群完整性检查(单机测试)cluster-require-full-coverage no

从节点1配置(redis-7003.conf):

port 7003daemonize yespidfile /var/run/redis_7003.pidlogfile "/usr/local/redis-cluster/logs/redis_7003.log"dir /usr/local/redis-cluster/datadbfilename dump-7003.rdbappendonly yesappendfilename "appendonly-7003.aof"# 开启集群模式cluster-enabled yescluster-config-file nodes-7003.confcluster-node-timeout 5000# 指定主节点replicaof 127.0.0.1 7000

依次创建 redis-7001.confredis-7002.confredis-7004.confredis-7005.confredis-7006.conf,并修改端口号。

3. 启动服务

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

4. 创建集群

# 进入Redis源码目录cd /path/to/redis-5.0.5/src# 使用官方工具创建集群./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

执行命令后,会提示输入 yes 来确认分配哈希槽和创建集群。

5. 连接集群

# 使用 -c 参数连接集群redis-cli -c -p 7000# 设置key127.0.0.1:7000> set name "redis-cluster"# 读取key(可能重定向到其他节点)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>

四、总结与对比

特性主从复制哨兵模式官方集群
读写分离
数据分片
高可用(自动故障转移)(内置)
部署复杂度
适用场景读多写少、简单扩展需要高可用、读写分离大数据量、高并发

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备2026025700号-3 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。