Redis 主从节点的核心区别
特性 | 主节点 (Master) | 从节点 (Slave/Replica) |
---|---|---|
读写权限 | 可读可写 | 只读(默认配置) |
数据流向 | 数据来源 | 从主节点同步数据 |
连接关系 | 可连接多个从节点 | 只能连接一个主节点 |
故障切换 | 故障时需要手动/自动提升从节点 | 可被提升为新的主节点 |
命令执行 | 执行所有命令 | 拒绝写操作(SET/DEL等) |
为什么Redis会导致登录失败?(故障原因分析)
-
主从切换未完成
-
Redis 主节点故障后,从节点被提升为新主节点需要时间
-
在此期间客户端仍向旧节点(已降级为从节点)写入 token
-
-
配置错误导致意外切换
# 错误配置示例(redis.conf) replicaof 172.18.0.2 6379 # 使当前节点成为从节点
-
网络分区问题
-
主节点与哨兵(Sentinel)失去联系
-
哨兵集群误判主节点下线,触发故障转移
-
-
未禁用从节点写入
# 危险配置(允许从节点写入) replica-read-only no
导致数据不一致,主节点恢复后覆盖新数据
-
客户端未处理重定向
-
智能客户端未实现
MOVED
重定向处理 -
连接池未刷新拓扑信息
-
典型故障场景还原
解决方案和预防措施
立即恢复服务
# 1. 提升从节点为主节点
redis-cli -h problem_replica SLAVEOF NO ONE# 2. 更新客户端连接配置
sed -i 's/old_master_ip/new_master_ip/' application.properties
高可用架构改造
关键配置检查
# redis.conf
replica-read-only yes # 确保从节点只读
min-replicas-to-write 1 # 至少1个从节点才可写
为什么影响范围大?
-
Token写入是关键路径
-
所有登录请求都需要写Redis
-
故障直接影响新用户登录和老用户会话刷新
-
-
雪崩效应
-
登录失败导致重试流量激增
-
连接池耗尽引发级联故障
-
-
无降级方案
-
多数系统未设计本地token缓存
-
缺乏写操作降级策略
-
建议:设计双写策略或异步写队列,保证核心登录流程可用性。