Redis 主从同步实现过程

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介: Redis 主从同步实现过程

Redis 主从同步实现过程


文章目录

主从模式介绍

MySQL主从复制的原因一样,Redis虽然读写的速度非常快,但是当读请求较多时也会产生较大的压力,为了分担读Redis的压力,Redis支持了主从复制的架构,从节点可以分担主节点的读压力

Redis的主从复制可以根据是否是全量,分为全量同步和增量同步(也叫全量复制和部分复制)。

  • 全量复制一般用于初次复制的场景
  • 部分复制则用于处理因网络中断等原因造成数据丢失的场景。

全量同步与增量同步

全量同步

全量同步发生在slave初始化的阶段,这个阶段slave需要将master上所有的数据都复制到本节点上,全量同步的步骤:

  1. 从节点连接上主节点后发送PSYNC命令;
  2. 主节点在接收到PSYNC命令后,执行BGSAVE命令开始生成RDB文件,并通过缓冲区记录在执行了BGSAVE后执行的所有写命令;
  3. 主节点在执行完BGSAVE命令后,向所有的从服务器发送快照文件,并在发送期间持续的记录写命令;
  4. Slave节点在收到快照文件后丢弃所有的旧数据,并载入新收到的快照;
  5. master在发送完快照后,开始向从服务器发送缓冲区中记录的这段时间内的写命令;
  6. 从服务器在载入快照数据完成后,开始接收缓冲区中的命令,并在Slave节点上执行;
  7. 在完成了数据同步后,Slave节点的数据初始化就算完成了,这时候Slave节点就可以开始接收客户端的读请求了

过程如下图所示

增量同步

增量同步是在Slave节点在初始化数据完成后正常工作期间,Master节点在接收到写请求后同步到从服务器的过程。

增量同步的过程就是Master节点在收到一个写请求后就会向Slave节点同步相同的命令,Slave节点接收并执行写命令。

同步策略

当Slave节点与Master节点第一次连接的的时候会进行全量同步,在全量同步结束后会进行增量同步。

Slave节点可以在任何时候发起全量同步,Redis中的方式是,会现场时进行增量同步,当增量同步不成功的时候才会进行全量同步;

注意:如果多个Slave节点挂了,那么在重启的时候都会向Master发送SYNC请求,当多个节点同时发出SYNC请求时,可能会出现Master节点IO剧增而宕机。

扩展

主从同步配置方式

在Slave节点的配置文件中加上

slaveof ip:port   #主节点的地址

重启从节点即可

主从同步的特点

  1. 采用异步复制
  2. 一个Master节点可以有多个Slave节点
  3. Slave节点可以关联在其他Slave节点上,做到从从同步
  4. 在进行数据同步的过程中,主节点仍可以正常处理请求,不会阻塞Master

psync命令执行过程

psync命令的执行过程以及返回结果,如下图:

  1. 若回复+FULLRESYNC,则从节点将触发全量复制;
  2. 若回复+CONTINUE,则从节点将触发部分复制;
  3. 若回复-ERR,说明主节点版本过低,无法识别psync命令。

全量复制的过程,如下图:

部分复制的过程,如下图:


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
28天前
|
缓存 运维 NoSQL
Redis主从模式部署
Redis主从模式部署
39 4
|
19天前
|
缓存 NoSQL Redis
Redis主从架构
当看到图示中红色标记的,就代表从节点挂载成功了。
15 0
|
20天前
|
NoSQL Java 关系型数据库
考考你Redis主从,就知道有没深入Redis
大家好,我是南哥。一个对Java程序员进阶成长颇有研究的人,今天继续给大家带来新的一篇Java进阶指南。如果是单机版的数据库,像MySQL、Redis,看起来实现并不复杂。只要支持保存一条数据,同时要能够查询出来。但如果是多机版的数据库呢,各个节点的配合联调是比较复杂的过程,看起来就不是那么简单喽。要考你对Redis深不深入理解,问问Redis多机版相关的问题就知道了。我们今天就来指南下Redis主从架构。
考考你Redis主从,就知道有没深入Redis
|
10天前
|
安全 NoSQL Java
网络安全-----Redis12的Java客户端----客户端对比12,Jedis介绍,使用简单安全性不足,lettuce(官方默认)是基于Netty,支持同步,异步和响应式,并且线程是安全的,支持R
网络安全-----Redis12的Java客户端----客户端对比12,Jedis介绍,使用简单安全性不足,lettuce(官方默认)是基于Netty,支持同步,异步和响应式,并且线程是安全的,支持R
|
2月前
|
存储 缓存 NoSQL
Redis与数据库同步指南:订阅Binlog实现数据一致性
本文由开发者小米分享,探讨分布式系统中的一致性问题,尤其是数据库和Redis一致性。文章介绍了全量缓存策略的优势,如高效读取和稳定性,但也指出其一致性挑战。为解决此问题,提出了通过订阅数据库的Binlog实现数据同步的方法,详细解释了工作原理和步骤,并分析了优缺点。此外,还提到了异步校准方案作为补充,以进一步保证数据一致性。最后,提醒在实际线上环境中需注意日志记录、逐步优化和监控报警。
83 3
|
2月前
|
负载均衡 NoSQL 网络协议
Redis(主从模式)
Redis(主从模式)
41 1
|
2月前
|
监控 NoSQL Redis
Redis分区容错秘诀:解密主从模式
Redis主从模式用于提高高可用性、负载均衡和数据备份。主节点处理写入,从节点复制数据并分担读取,实现故障切换和读写分离。配置主从关系后,从节点连接主节点进行全量和增量复制。当主节点故障,从节点可接管服务。然而,主从延迟和数据不一致性是挑战,可通过优化网络、使用Sentinel和Redis Cluster等解决。关注“软件求生”获取更多内容。
157 1
Redis分区容错秘诀:解密主从模式
|
1月前
|
NoSQL Redis
Redis主从结构,主库宕机,解决
Redis主从结构,主库宕机,解决
19 0
|
1月前
|
消息中间件 NoSQL Linux
详解Redis的主从同步原理
只不过在主节点中叫做master_repl_offset; 从节点也有一个偏移量叫做slave_repl_offset,用来记录从节点已经从主节点的repl_backlog_buffer中同步到的最新写指令的位置;
214 0
|
1月前
|
存储 NoSQL 网络协议
主从复制,Could not connect to Redis at 127.0.0.1:6380: Connection refusednot connected> exit,1.主从模式如何指
主从复制,Could not connect to Redis at 127.0.0.1:6380: Connection refusednot connected> exit,1.主从模式如何指