Redis Cluster集群模式和各种常见问题

一、重点:Redis Cluster(集群)模式

1. 什么是Cluster模式

Redis Cluster模式是Redis为解决数据量大、水平扩展需求 设计的分布式解决方案,核心功能是结合数据分片高可用保障 ------既通过哈希槽划分数据实现节点间的负载均衡,又支持节点故障后的自动切换,避免单点故障,适用于需要横向扩展存储能力的场景。

2. 运行条件

服务器数量:至少需要6台服务器(推荐配置:3个Master节点 + 每个Master对应1个Slave节点)

Master节点要求 :需为奇数个Master(保障投票选举的有效性,避免平票)

主从复制:每个Master节点至少关联1个Slave节点,用于主节点故障时的角色承接

特殊规则:挂掉的Master节点仍会参与投票过程,确保选举机制的完整性

3. 核心工作原理

(1)数据分片:基于哈希槽的分布式存储

哈希槽划分 :将Redis数据空间划分为16384个哈希槽(Slots),所有数据通过哈希算法映射到对应槽位

槽位分配:每个Master节点负责一部分槽位(可手动配置或自动分配),Slave节点不直接存储槽位数据,仅作为对应Master的副本同步数据

数据路由:客户端访问数据时,先通过哈希计算确定目标槽位,再定位到负责该槽位的Master节点,实现分布式存储与负载均衡

(2)节点通信:基于Gossip协议的状态同步

集群中所有节点通过Gossip协议定期交换信息,内容包括:各节点的存活状态、槽位分配情况、主从关系等

该协议确保集群内节点状态一致,当槽位分配或节点角色变化时,能快速同步到所有节点,避免信息偏差

(3)故障处理:主从切换与槽位接管

​ ① 故障检测:节点通过心跳检测感知其他节点状态,若Master节点故障,其关联的Slave节点会优先检测到故障

​ ② 新主选举:故障Master的Slave节点会参与选举,最终选出1个Slave升级为新Master

​ ③ 槽位接管:新Master自动接管原Master负责的所有哈希槽,继续提供数据服务

​ ④ 集群降级:若故障Master无关联Slave节点,集群会降级为"部分可用"(仅其他Master的槽位可正常访问)或"不可用"(视配置而定)

二、Cluster模式与Sentinel(哨兵)模式的区别

对比维度 Cluster模式 Sentinel模式
核心功能 数据分片(水平扩展)+ 高可用(故障切换) 仅高可用(主从故障自动转移),无数据分片
数据分布 16384个哈希槽,节点仅存对应槽位数据 主从节点存储全量数据,从节点是主节点副本
适用场景 数据量大、需横向扩展(如海量用户数据存储) 数据量小、读多写少(如高频读缓存场景)
节点通信 基于Gossip协议交换槽位与节点状态 基于"hello频道"相互监听,同步故障信息
故障处理 主节点故障时,Slave升级并接管哈希槽 选举Leader哨兵,从所有Slave中选新主节点

三、Redis持久化机制(AOF + RDB)

持久化是Redis保障数据不丢失的核心手段,通过将内存数据持久化到磁盘,避免重启后数据清空。

1. RDB持久化(数据快照)

触发方式(至少2种)

手动触发

save命令:同步执行,阻塞Redis进程直到RDB文件生成(生产环境不推荐,易影响服务)

bgsave命令:异步执行,Redis fork子进程生成RDB文件,主进程正常处理请求(生产常用)

自动触发

​ 配置save规则(如save 900 1:900秒内有1次写操作即触发bgsave

​ 主从复制时,主节点向从节点同步数据前,自动执行bgsave生成快照

2. AOF持久化(日志追加)

触发方式

实时写入触发 (由appendfsync配置控制)

always:每个写命令立即刷盘(最安全,性能最差)

everysec:每秒刷盘1次(默认配置,平衡安全与性能)

no:由操作系统决定刷盘时机(性能最好,丢数据风险高)

AOF重写触发(优化日志文件大小):

​ 手动:执行bgrewriteaof命令,子进程合并冗余命令重写AOF文件;

​ 自动:通过auto-aof-rewrite-percentage(文件增长比例)+ auto-aof-rewrite-min-size(最小文件大小)配置,满足条件自动重写

四、Redis常见故障及解决方案

1. 缓存雪崩

定义:大量缓存数据同时过期失效,或Redis服务宕机,导致所有请求直接冲击数据库,造成数据库过载不可用;

解决/预防

​ 给缓存过期时间加随机值,避免大量Key同时失效

​ 搭建Redis集群(如Cluster模式),避免单点故障

​ 增加服务降级、限流措施,限制数据库请求量

​ 数据库配置读写分离,分散查询压力

2. 缓存穿透

定义:请求不存在的数据(既不在缓存也不在数据库),如恶意请求无效ID,持续绕过缓存访问数库,消耗数据库资源。

解决/预防

​ 缓存空值(对不存在的数据缓存空结果,设置短过期时间)

​ 用布隆过滤器过滤不存在的请求

​ 接口层增加参数校验,拦截非法请求

3. 缓存击穿

定义:热点Key过期时,大量请求同时访问该Key,直接冲击数据库;

解决/预防

​ 热点Key设置为"永不过期"

​ 加互斥锁(如SETNX命令),仅允许1个线程更新缓存,其他线程等待

五、Redis优化方案

1. 内存碎片优化

内存碎片是Redis频繁增删改后产生的零散空闲内存,优化方式:

​ 开启自动碎片整理(Redis 4.0+ 配置activedefrag yes

​ 避免频繁操作大Key,将大Key拆分为多个小Key(如将大哈希表拆分为多个小哈希表)

​ 必要时重启Redis(需先完成持久化,避免数据丢失)

2. 淘汰与命中机制调整

淘汰机制(内存满时的清理策略):

​ 优先选择allkeys-lru(淘汰最少访问的Key),适配热点数据场景;

​ 按需选择volatile-lru(仅淘汰带过期时间的最少访问Key)

命中机制(提升缓存命中率):

​ 合理设置过期时间,避免热点数据过早失效

​ 缓存全量热点数据,优化Key设计(避免大Key、冗余Key)

六、Redis Cluster 模式搭建步骤(3主3从)

1. 环境准备

服务器:同一台机器模拟6个节点(端口6001-6006,3主3从)。

目录创建:

Bash 复制代码
cd /etc/redis/
mkdir -p redis-cluster/redis600{1..6}

2. 配置文件修改(以6001为例,其他节点同理)

编辑/etc/redis/redis-cluster/redis6001/redis.conf

Plain 复制代码
# 注释bind,监听所有网卡
# bind 127.0.0.1
protected-mode no  # 关闭保护模式
port 6001          # 节点端口(6001-6006依次修改)
daemonize yes      # 后台运行
cluster-enabled yes # 开启集群功能
cluster-config-file nodes-6001.conf # 集群配置文件
cluster-node-timeout 15000 # 集群超时时间(15秒)
appendonly yes     # 开启AOF持久化

3. 启动所有节点

Bash 复制代码
for d in {1..6}; do
  cd /etc/redis/redis-cluster/redis600$d
  redis-server redis.conf
done
# 验证启动:ps -ef | grep redis

4. 创建集群

Bash 复制代码
redis-cli --cluster create 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006 --cluster-replicas 1

--cluster-replicas 1:每个主节点分配1个从节点。

交互时输入yes确认哈希槽分配。

5. 测试集群

Bash 复制代码
# 连接集群(-c开启节点跳转)
redis-cli -p 6001 -c
# 查看哈希槽分布
127.0.0.1:6001> cluster slots
# 测试数据写入(自动路由到对应槽节点)
127.0.0.1:6001> set name zhangsan


相关推荐
小鸡脚来咯2 小时前
MySQL InnoDB内存结构,增删改查时怎么运行的
数据库·mysql
杨了个杨89822 小时前
PostgreSQL(pgSQL)常用操作
数据库·postgresql·oracle
蝈蝈(GuoGuo)2 小时前
SQL Server 中指定范围分页取数详解
数据库
慕白Lee2 小时前
【PostgreSQL】日常总结
数据库·postgresql
sc.溯琛3 小时前
MySQL 视图实战:简化查询与数据安全管控指南
数据库
风月歌3 小时前
小程序项目之校园二手交易平台小程序源代码(源码+文档)
java·数据库·mysql·小程序·毕业设计·源码
小鸡脚来咯3 小时前
Redis数据结构大全(从基础到实战)
redis
John_ToDebug3 小时前
浏览器极速兼容模式切换原理解析:多内核隔离、内核预热、状态缓存与异步渲染
chrome·缓存·webview
西格电力科技3 小时前
绿电直连架构适配技术的发展趋势
大数据·服务器·数据库·架构·能源