首页 > 数据库 >简单说说 redis主从同步原理

简单说说 redis主从同步原理

时间:2024-10-26 16:47:19浏览次数:3  
标签:同步 redis 节点 replication 全量 主从

主从同步分为以下几个情况

1 从节点和主节点建立连接时进行全量同步

2 从节点和主节点正常运行时同步

3 从节点和主节点断开连接后重新连接进行全量或者增量同步

从节点和主节点建立连接时同步

1 从节点向主节点发生psync repId offsetId,其中repId是主节点标识,offsetId代表偏移量,由于还未开始复制,offset = -1,

2 主节点会响应 fullresync repId offsetId,从节点会将该信息保存下来,后续需要使用。

3 主节点接收后,会fork一个进程,执行bgsave异步生成RDB文件,从节点接收到后,会加载RDB到内存中。

4 这个时候,主节点是非阻塞的,在从节点加载RDB文件期间,主节点执行的指令会存放到replication buffer 复制缓冲区中,在从节点加载完RDB文件后,主节点会将replication buffer中的内容发送给从节点,从节点加载。

主从节点正常运行时同步

主节点会将写操作记录到replication buffer 复制缓冲区中

主节点会异步的将复制缓冲区中的数据同步给从节点

从节点按顺序执行这些操作。

从节点和主节点断开连接后重新连接进行全量同步或者增量同步

一般会进行增量同步,但是在某些情况下会进行全量同步

全量同步的情况有

1 当从节点在恢复期间,主节点发生了重新选举,这个时候repId会比对不一致

2 在断开连接期间,主节点的replication buffer的最小的id已经大于从节点的offsetId

总结

从redis主从同步的过程可知,redis主从架构是基于AP模型设计的,在保证可用性的同时会牺牲一定程度的一致性,所以,在一些要求保证强一致性的场景下,redis主从架构不适合作为缓存数据库

标签:同步,redis,节点,replication,全量,主从
From: https://blog.csdn.net/sjdxx/article/details/143201448

相关文章

  • Redis & 事务 & 总结
    前言 相关系列《Redis&目录》(持续更新)《Redis&事务&源码》(学习过程/多有漏误/仅作参考/不再更新)《Redis&事务&总结》(学习总结/最新最准/持续更新)《Redis&事务&问题》(学习解答/持续更新)  参考文献《Redis事务详解》  概述    Redis事务并......
  • 【MySQL数据库】MySQL主从复制
    文章目录MySQL主从复制MySQL主从复制的分类MySQL主从复制原理MySQL主从复制的配置步骤MySQL主从复制的同步模式MySQL主从复制实验环境准备关闭防火墙和SELinux时间同步主服务器设置从服务器设置MySQL主从复制配置主服务器配置从服务器配置(以Slave1为例,Slave2配置......
  • Redis5.0.10集群搭建
    参考文档https://www.cnblogs.com/hmwh/p/10289138.htmlhttps://www.cnblogs.com/zgqbky/p/11792141.html以下操作均需在每台服务器上执行安装依赖关系yuminstallmakezlibopenssl*ImageMagick-develgcc*rubygems-y2、创建节点目录mkdir-p/opt/app/redis-cluste......
  • Redis4.0.12集群搭建
    服务器:节点1:10.10.175.55 端口:6379/7379节点2:10.10.175.56 端口:6379/7379节点3:10.10.175.57 端口:6379/7379以下操作均需在每台服务器上执行安装依赖关系yuminstallmakezlibopenssl*ImageMagick-develgcc*rubygems-y2、创建节点目录mkdir-p/usr/local/redis-cl......
  • Redis的基础命令
    一、数据库操作命令1.redis中库的说明redis中的库默认存在16个库,分别按照0-15来排列选择库的命令:select0-15例如:select1就是选择一号库的意思2.清空表的命令1.清除当前表:flushdb2.清除所有表:flushall3.redis中客户端显示中文./redis-cli-p7000--raw二、操作key相......
  • mysql5.7主从搭建
    mysql下主从(主主)搭建首先要准备两台服务器,一台主服务器(Master),另一台从服务器(Slave),然后要保证Master与Slave的版本要相同且Master不能高于Slave的版本,一般稳健的做法都是使其版本相同,因为MySQL不同版本之间的binlog(二进制日志)格式可能会不一样,最后会导致同步出现异常。参考地......
  • Redis的详细安装教程和环境变量配置(附有详细步骤讲解及相关操作截图和代码)
    NoSQL简介NoSQL数据库是一种非关系型数据库,它在处理大规模、高并发的动态网站数据时具有明显优势。NoSQL数据库的出现是为了解决传统关系数据库在处理大数据量和高并发请求时遇到的性能瓶颈。NoSQL数据库的设计允许它们在分布式环境中更有效地扩展,同时提供灵活的数据模型来适应不......
  • 如何使用NTP同步时间?
    ​一、NTP通信概述很多场景中,由于业务需要,模块需要保持正确的系统时钟,才能正常工作。但是模块上电后的初试时间戳是946713600(即2000/01/01,16:00:00),所以同步时钟成为了开发者要解决的重要问题。对于Cat.1模块,移动/电信卡,通常会下发基站时间,那么sntp就不是必要的,而联通卡通常......
  • redis数据库操作指令
    一、数据库操作指令2、redis中库说明对于一个redis服务而言,包含默认有16个数据库给我们使用,从0开始编号,共15号数据库,默认使用的是0号数据库切换库,select库号举例:使用1号库:select1库和库之间数据不共享库和库之间的键可以重名2、redis中清空库的指令清空当前库flush......
  • Redis
    Redis基础是什么(定义,特点)开源的基于内存的数据库(内疚多缘分)基于内存:读写速度快,适用于高性能应用场景,如缓存持久化:把数据存储到磁盘,方式有AOF日志,RDB快照等多数据结构:列表、哈希、集合等,灵活的应对不同场景原子性操作:支持原子性操作,维护并发环境下数据一致性分布式:提供......