Redis 主从同步实现过程

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 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
相关文章
|
4月前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
6月前
|
存储 缓存 NoSQL
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
redis分布式锁、redisson、可重入、主从一致性、WatchDog、Redlock红锁、zookeeper;Redis集群、主从复制,全量同步、增量同步;哨兵,分片集群,Redis为什么这么快,I/O多路复用模型——用户空间和内核空间、阻塞IO、非阻塞IO、IO多路复用,Redis网络模型
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
|
2月前
|
监控 NoSQL 容灾
# Redis主从同步技术分享
Redis作为一个高性能的内存数据库,其主从同步机制是分布式环境下保证数据一致性的重要手段。本文将详细介绍Redis主从同步的实现方法,包括全量同步和增量同步,以及如何配置和监控主从同步状态。
|
7月前
|
缓存 运维 NoSQL
Redis主从模式部署
Redis主从模式部署
70 4
|
7月前
|
缓存 NoSQL Redis
Redis主从架构
当看到图示中红色标记的,就代表从节点挂载成功了。
44 0
|
4月前
|
NoSQL 安全 容灾
阿里云DTS踩坑经验分享系列|Redis迁移、同步
阿里云数据传输服务DTS在帮助用户迁移Redis数据、同步数据时,在某些复杂场景下会出现报错,或者源库与目标库数据不一致的问题,给用户带来困扰。本文介绍了DTS Redis到Redis迁移、同步过程中的典型问题,以帮助用户更好地使用DTS。
275 2
|
7月前
|
NoSQL Java 关系型数据库
考考你Redis主从,就知道有没深入Redis
大家好,我是南哥。一个对Java程序员进阶成长颇有研究的人,今天继续给大家带来新的一篇Java进阶指南。如果是单机版的数据库,像MySQL、Redis,看起来实现并不复杂。只要支持保存一条数据,同时要能够查询出来。但如果是多机版的数据库呢,各个节点的配合联调是比较复杂的过程,看起来就不是那么简单喽。要考你对Redis深不深入理解,问问Redis多机版相关的问题就知道了。我们今天就来指南下Redis主从架构。
考考你Redis主从,就知道有没深入Redis
|
6月前
|
监控 NoSQL Ubuntu
|
7月前
|
消息中间件 NoSQL Linux
详解Redis的主从同步原理
只不过在主节点中叫做master_repl_offset; 从节点也有一个偏移量叫做slave_repl_offset,用来记录从节点已经从主节点的repl_backlog_buffer中同步到的最新写指令的位置;
1284 2
|
6月前
|
安全 NoSQL Java
网络安全-----Redis12的Java客户端----客户端对比12,Jedis介绍,使用简单安全性不足,lettuce(官方默认)是基于Netty,支持同步,异步和响应式,并且线程是安全的,支持R
网络安全-----Redis12的Java客户端----客户端对比12,Jedis介绍,使用简单安全性不足,lettuce(官方默认)是基于Netty,支持同步,异步和响应式,并且线程是安全的,支持R