SpringBoot–Redis集群配置

1. Redis集群的三种方式

1.1 主从模式 (Master-Slave)

  • 架构:一个主节点 + 一个或多个从节点
  • 读写分离:主节点负责写,从节点负责读
  • 缺点:主节点故障时需要手动切换,无自动故障恢复

1.2 哨兵模式 (Sentinel)

  • 功能:监控Redis系统运行状态
  • 自动故障迁移:主节点故障时自动选举新主节点
  • 需要部署:独立的哨兵进程

1.3 集群模式 (Cluster)

  • 数据分片:将键空间分为16384个槽位
  • 分布式存储:每个主节点负责部分槽位
  • 高可用性:自动故障转移和数据复制

2. 主从复制搭建

2.1 环境准备

# 三个Redis实例
Redis6379 (主节点)
Redis6380 (从节点)  
Redis6381 (从节点)

2.2 配置文件修改

在redis.windows.conf文件中修改

主库配置 (6379)

port 6379
dbfilename dump6379.rdb

从库配置

port 6380/6381
dbfilename dump6380.rdb/dump6381.rdb
slaveof 127.0.0.1 6379    # 指定主库
masterauth "123456"       # 主库密码

在这里插入图片描述

2.3 验证主从复制

# 查看复制信息
127.0.0.1:6381> info replication

# 输出示例
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up

3. 主从复制原理

3.1 复制流程

  1. SYNC命令:从库向主库发送SYNC命令
  2. RDB快照:主库执行RDB持久化,缓存写命令
  3. 数据传输:主库发送快照文件和缓存命令
  4. 数据加载:从库载入快照并执行命令
  5. 持续同步:主库持续发送写命令

3.2 无磁盘复制

# 避免磁盘IO瓶颈
repl-diskless-sync yes

3.3 故障处理

从节点宕机

  • 重启后自动重新加入集群
  • Redis 2.8+ 支持增量复制

主节点宕机

  1. 手动执行 SLAVEOF NO ONE 提升从节点为主节点
  2. 重启原主节点并设置为从节点

4. 哨兵模式配置(一主二从三哨兵)

4.1 哨兵配置文件 (sentinel.conf)

# 哨兵端口
port 26379

# 绑定IP
bind 127.0.0.1

# 监控主服务器 (2表示需要2票选举)
sentinel monitor mymaster 127.0.0.1 6379 2

# 响应超时时间
sentinel down-after-milliseconds mymaster 5000

# 故障转移超时
sentinel failover-timeout mymaster 5000

# 主库密码
sentinel auth-pass mymaster 123456

# 并行同步数量
sentinel config-epoch mymaster 2

注意: 三个都需要修改port 分别是26379,26380,26381 sentinel monitor mymaster 127.0.0.1 6379 2 端口号6379不需要修改 三个文件都一样

4.2 启动哨兵

  • 创建startup_sentinel.bat
# 启动哨兵服务  记事本打开bat文件文件,写入内容
redis-server.exe sentinel.conf --sentinel

在这里插入图片描述

5. 哨兵工作原理

5.1 监控机制

  • 独立进程:哨兵作为独立进程运行
  • 相互监控:多个哨兵之间互为监控
  • 心跳检测:定期检查Redis节点状态

5.2 故障转移流程

  1. 主观下线:单个哨兵认为主节点不可用
  2. 客观下线:多个哨兵确认主节点故障
  3. 选举领导:哨兵之间选举领导哨兵
  4. 故障转移:领导哨兵执行故障转移
  5. 配置更新:更新其他节点的配置

5.3 测试场景

从机宕机

  • 哨兵检测到但从机恢复后自动重新加入

主机宕机

# 哨兵日志显示故障转移
-switch-master mymaster 127.0.0.1 6379 127.0.0.1 6380
  • 自动选举新主节点(如6380)
  • 原主节点恢复后成为从节点

6. 优缺点对比

6.1 主从模式

优点:简单、读写分离
缺点:无自动故障恢复
场景:对高可用性要求不高的场景

6.2 哨兵模式

优点:自动故障迁移、高可用性
缺点:配置复杂、需要额外资源
场景:对高可用性有要求的场景

6.3 集群模式

优点:高可用、高扩展、数据分片
缺点:配置复杂、节点协同
场景:大规模、高并发、高可用场景

7. 最佳实践

  1. 生产环境:至少使用3个哨兵实例
  2. 网络配置:确保节点间网络通畅
  3. 监控告警:设置哨兵监控和告警机制
  4. 数据备份:定期备份重要数据
  5. 性能测试:在生产前进行充分的性能测试
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐