redis-主从数据一致
高可用需要保持数据尽量不丢失,服务尽量少中断,redis使用AOF/RDB来实现数据尽量不丢失
redis如何保证尽量少的服务不中断呢?
redis提供了主从库模式,为了保证数据一致性,主从库使用读写分离,任何节点都可以提供读操作,主库才能
提供写操作,然后主库同步数据到从库
思考一下为什么不所有的库都一起提供读写服务呢?
多库用来提供读写功能 ,就导致多个库数据不一致,需要考虑同步问题
使用主库提供写的功能后解决了多个库数据版本不一致的问题,紧接着需要处理的是数据同步的问题
1. 从库第一次与主库建立连接 主库会生成rdb文件传给从库,同步期间的命令写到缓冲区中,等从库同步完发送缓冲区数据给从库同步
上面是正常情况,如果出现断线了怎么办呢?
在正常的情况下,主库和从库都会各自保存着一份复制偏移量,在正常的情况下主从的复制偏移量是相同的,
在断线期间,主从的复制偏移量会不一致,从库会去重连主库,带着偏移量和runid,runid是主库的id,复制积压缓冲区内保存的是主库的写操作和最新的偏移量,
如果复制积压缓冲区中大于从库复制偏移量的那部分数据还在就部分复制
如果不存在就全量同步
2. 并且从库每1秒发送复制偏移量到主库,不一致就需要同步,如果主库没10秒发送心跳到从库,收不到所有从库的心跳超过10秒 或者 从库数量小于3,主库拒绝服务
新数据是异步写入slave的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!