谈一谈redis脑裂

什么是redis脑裂

(1)一主多从架构中,主节点与客户端通信正常,主节点与哨兵、从节点连接异常,客户端仍正常写入数据

(2)哨兵判定主节点下线,重新选主

(3)原主节点与哨兵和其他节点通信恢复,成为新主节点的从节点,drop本身所有的数据,从新主节点全量copy数据

(4)原主节点通信异常至新主节点出现期间客户端写入的数据丢失

这就是脑裂

如何应对脑裂现象

在原主节点通信异常至新主节点选举出现期间,拒绝客户端的数据写入

redis提供了两个配置项

  • min-slaves-to-write:与主节点通信的从节点数量必须大于等于该值主节点,否则主节点拒绝写入
  • min-slaves-max-lag:主节点与从节点通信的ACK消息延迟必须小于该值,否则主节点拒绝写入。
    Redis脑裂可以采用min-slaves-to-write和min-slaves-max-lag合理配置尽量规避,但无法彻底解决
相关推荐
解决方案工程师1 小时前
【redis】redis内存管理,过期策略与淘汰策略
数据库·redis·缓存
web1511736022310 小时前
Redis--模糊查询--方法实例
数据库·redis·缓存
MelonTe13 小时前
使用Go复刻skiplist核心功能
redis·golang
左灯右行的爱情13 小时前
Redis-事务
数据库·redis·bootstrap
guihong00415 小时前
深入理解Redis:从线程模型到应用场景的全面解析
数据库·redis·缓存
draymond710715 小时前
redis-bitmap使用场景
redis
Suk-god15 小时前
【Redis原理】底层数据结构 && 五种数据类型
数据结构·数据库·redis
Good Note16 小时前
Golang的静态强类型、编译型、并发型
java·数据库·redis·后端·mysql·面试·golang
卑微的小鬼18 小时前
Go 语言结合 Redis 实现固定窗口、滑动窗口、令牌桶和漏桶限流算法的示例代码
开发语言·redis·golang
苍老流年21 小时前
Redis底层数据结构
数据结构·数据库·redis