[Redis]——主从同步原理(全量同步、增量同步)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: [Redis]——主从同步原理(全量同步、增量同步)

Redis集群:

     部署多台Redis我们称之为Redis集群,他有一个主节点(负责写操作),多个从节点(负责读操作),它有高可用性、可扩展性、性能提升、自动分片以及无中心架构等优势。

如果想让A成为B的从节点,使用命令

我们在从节点使用slaveof masterIp masterport 或者 replicaof masterIp masterport

主从同步原理:

  • 第一阶段:判断replid是否相同,如果不同,那么代表是第一次建立连接,这是做的操作是修改从节点的replid。
  • 第二阶段:主节点执行bgsave命令,然后将RDB文件发送给从节点,在记录RDB和发送文件的同时,主节点所作的写操作会记录到一个日志文件中repl_baklog。
  • 第三阶段:发送repl_baklog命令,从节点同步并执行里面的命令。

replid和offset:

replid:用于判断两者是否是第一次连接

offset:是偏移量,主节点每做一次写操作,偏移量会+1,然后从节点每做一次增量同步操作,就是执行repl_baklog命令,offset也会跟着改变,所以当主机点和从节点的offset不同时,就会做主从同步。

全量同步和增量同步:

全量同步(也就是第一次同步)流程:

       slave建立连接判断replid是否相同 -> 不同拒绝增量同步,并修改replid/相同进行增量同步 ->master节点做bgsave生成RDB文件发送给从节点 -> 从节点做全量同步 -> master做bgsave期间的命令记录在repl_baklog中,并持续将该文件中的命令发送给从节点 -> 从节点执行log中命令(offset起作用了)保证主从一致。

增量同步:

       增量同步是从节点更新repl_baklog文件中offset偏移量之后的那些操作。

repl_baklog文件:

       repl_baklog文件可以理解为一个闭环的数组,当master做写操作时,主节点的offset会增加,当文件写满了时,会从头开始,覆盖旧数据,所以当从节点宕机了,主节点一直在写数据,导致转了一圈到了从节点的offset的地方了,那么就会触发全量同步

主从集群的优化:

  • 从RDB角度->

在master中配置repl-diskless-sync yes启用无磁盘复制,直接通过网络传输到从节点。

Redis单节点内存占用不要太大,减少RDB导致的过多磁盘IO。

  • 从增量同步角度

适当增大repl_baklog文件的大小,发现slave宕机尽快实现故障恢复

限制一个master上的slave节点数量,如果slave数量太多,建议采用主-从-从链式结构。

相关文章
|
存储 缓存 NoSQL
Redis 服务器全方位介绍:从入门到核心原理
Redis是一款高性能内存键值数据库,支持字符串、哈希、列表等多种数据结构,广泛用于缓存、会话存储、排行榜及消息队列。其单线程事件循环架构保障高并发与低延迟,结合RDB和AOF持久化机制兼顾性能与数据安全。通过主从复制、哨兵及集群模式实现高可用与横向扩展,适用于现代应用的多样化场景。合理配置与优化可显著提升系统性能与稳定性。
292 0
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
345 5
|
2月前
|
存储 缓存 监控
Redis分区的核心原理与应用实践
Redis分区通过将数据分散存储于多个节点,提升系统处理高并发与大规模数据的能力。本文详解分区原理、策略及应用实践,涵盖哈希、范围、一致性哈希等分片方式,分析其适用场景与性能优势,并探讨电商秒杀、物联网等典型用例,为构建高性能、可扩展的Redis集群提供参考。
172 0
|
9月前
|
消息中间件 缓存 NoSQL
Redis原理—5.性能和使用总结
本文详细探讨了Redis的阻塞原因、性能优化、缓存相关问题及数据库与缓存的一致性问题。同时还列举了不同缓存操作方案下的并发情况,帮助读者理解并选择合适的缓存管理策略。最终得出结论,在实际应用中应尽量采用“先更新数据库再删除缓存”的方案,并结合异步重试机制来保证数据的一致性和系统的高性能。
Redis原理—5.性能和使用总结
|
8月前
|
NoSQL 数据库 Redis
什么是 Redis 主从同步?
Redis 的主从同步(replication)机制,允许 Slave 从 Master 那里,通过网络传输拷贝到完整的数据备份,从而达到主从机制。 主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据。一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。 主从数据同步主要分二个阶段 : 第一阶段 : 全量复制阶段 ● slave节点请求增量同步 ● master节点判断replid,发现不一致,拒绝增量同步 ● master将完整内存数据生成RDB,发送RDB到slave ● slave清空本地数据,加载m
|
9月前
|
运维 NoSQL 算法
【📕分布式锁通关指南 04】redis分布式锁的细节问题以及RedLock算法原理
本文深入探讨了基于Redis实现分布式锁时遇到的细节问题及解决方案。首先,针对锁续期问题,提出了通过独立服务、获取锁进程自己续期和异步线程三种方式,并详细介绍了如何利用Lua脚本和守护线程实现自动续期。接着,解决了锁阻塞问题,引入了带超时时间的`tryLock`机制,确保在高并发场景下不会无限等待锁。最后,作为知识扩展,讲解了RedLock算法原理及其在实际业务中的局限性。文章强调,在并发量不高的场景中手写分布式锁可行,但推荐使用更成熟的Redisson框架来实现分布式锁,以保证系统的稳定性和可靠性。
546 0
【📕分布式锁通关指南 04】redis分布式锁的细节问题以及RedLock算法原理
|
6月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
1月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。
|
2月前
|
存储 缓存 NoSQL
Redis专题-实战篇二-商户查询缓存
本文介绍了缓存的基本概念、应用场景及实现方式,涵盖Redis缓存设计、缓存更新策略、缓存穿透问题及其解决方案。重点讲解了缓存空对象与布隆过滤器的使用,并通过代码示例演示了商铺查询的缓存优化实践。
191 1
Redis专题-实战篇二-商户查询缓存