文章目录

  • 主从配置
  • 主从工作原理
  • 全量复制
  • 增量复制
  • 主从复制风暴


主从配置

简要回顾一下,Redis的主从配置

  1. 复制一份redis.conf文件
  2. 将相关配置修改为如下值:
 port 6380pidfile /var/run/redis_6380.pid  # 把pid进程号写入pidfile配置的文件logfile "6380.log"dir /usr/local/redis-5.0.3/data/6380  # 指定数据存放目录
  1. 配置主从复制
 replicaof 127.0.0.1 6379   # 从本机6379的redis实例复制数据,Redis 5.0之前使用slaveofreplica-read-only yes  # 配置从节点只读
  1. 启动从节点
 redis-server redis.conf
  1. 连接从节点
 redis-cli -p 6380
  1. 测试在6379实例上写数据,6380实例是否能及时同步新修改数据

主从工作原理

  • 如果我们给master配置了一个slave,不管这个slave是否是第一次连接上Master,它都会发送一个PSYNC命令给master请求复制数据。

  • master收到PSYNC命令后,会在后台进行数据持久化通过bgsave生成最新的rdb快照文件,持久化期间,master会继续接收客户端的请求,它会把这些可能修改数据集的请求缓存在内存中。

  • 当持久化进行完毕以后,master会把这份rdb文件数据集发送给slave,slave会把接收到的数据进行持久化生成rdb,然后再加载到内存中。然后,master再将之前缓存在内存中的命令发送给slave。

  • 当master与slave之间的连接由于某些原因而断开时,slave能够自动重连Master,如果master收到了多个slave并发连接请求,它只会进行一次持久化,而不是一个连接一次,然后再把这一份持久化的数据发送给多个并发连接的slave。


全量复制


增量复制

这个缓冲 默认1m , 在redis.conf中 对应 repl-backlog-size 1mb

从redis2.8版本开始,redis改用可以支持部分数据复制的命令PSYNC去master同步数据,slave与master能够在网络连接断开重连后只进行部分数据复制(断点续传)。

master会在其内存中创建一个复制数据用的缓存队列,缓存最近一段时间的数据,master和它所有的slave都维护了复制的数据下标offset和master的进程id,因此,当网络连接断开后,slave会请求master继续进行未完成的复制,从所记录的数据下标开始。

如果master进程id变化了,或者从节点数据下标offset太旧,已经不在master的缓存队列里了,那么将会进行一次全量数据的复制。


主从复制风暴

如果有很多从节点,为了缓解主从复制风暴(多个从节点同时复制主节点导致主节点压力过大),可以做如下架构,让部分从节点与从节点(与主节点同步)同步数据,

Redis进阶 - Redis主从工作原理详解相关推荐

  1. nginx配置文件及工作原理详解

    nginx配置文件及工作原理详解 1 nginx配置文件的结构 2 nginx工作原理 1 nginx配置文件的结构 1)以下是nginx配置文件默认的主要内容: #user nobody; #配置用 ...

  2. sync.Map低层工作原理详解

    sync.Map低层工作原理详解 目录 为什么需要sync.Map?适合什么场景? sync.Map内部实现基本原理及结构体分析 sync.Map低层工作原理 1. 为什么需要sync.Map?适合什 ...

  3. ASP.NET页面与IIS底层交互和工作原理详解 (二)

    第三回: 引言 Http 请求处理流程 和 Http Handler 介绍 这两篇文章里,我们首先了解了Http请求在服务器端的处理流程,随后我们知道Http请求最终会由实现了IHttpHandler ...

  4. camera (13)---智能手机双摄像头工作原理详解:RBG +RGB, RGB + Mono

    智能手机双摄像头工作原理详解:RBG +RGB, RGB + Mono 由于双摄技术的快速发展,目前已经衍生出了几种不同的双摄硬件和算法配置解决方案.不同手机厂商可能有不同的双摄配置,比如华为荣耀P9 ...

  5. ASP.NET页面与IIS底层交互和工作原理详解(一)

    第一回: 引言 我查阅过不少Asp.Net的书籍,发现大多数作者都是站在一个比较高的层次上讲解Asp.Net.他们耐心.细致地告诉你如何一步步拖放控件.设置控件属性.编写CodeBehind代码,以实 ...

  6. 有刷直流电机工作原理详解

    有刷直流电机工作原理详解 来源:网络整理• 2018-05-10 09:00 • 56380次阅读 有刷直流电机被广泛用于从玩具到按钮调节式汽车坐椅的应用中.有刷直流 (Brushed DC,BDC) ...

  7. 晶体三极管结构及其工作原理详解

    晶体三极管基本概述 晶体管是一种与其他电路元件结合使用时可产生电流增益.电压增益和信号功率增益的多结半导体器件.因此,晶体管称为有源器件,而二极管称为无源器件.晶体管的基本工作方式是在其两端施加电压时 ...

  8. FTP协议及工作原理详解

    FTP协议及工作原理详解 1. FTP协议 什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写. 该协议是Internet文件传送的 ...

  9. 卡尔曼滤波工作原理详解

    卡尔曼滤波工作原理详解 网上看到有不少的博客翻译 How a Kalman filter works, in pictures, 这篇文章中非常有趣的解释了卡尔曼滤波,. 但是目前很多翻译的文章中公式 ...

最新文章

  1. redhat linux创建磁盘分区,redhat6.4 挂载硬盘,创建新分区,删除分区
  2. 人类究竟有多喜欢看热闹?! | 今日最佳
  3. 周华健,歌声伴我成长(四)
  4. Java基础---继承详解--this/supper---方法的重写与重载
  5. 【maven配置】IDEA自动生成的pom文件报错:URI Is Not Registered
  6. C# WinFrom 用Execl做模版进行数据导入简介
  7. 构建“.NET研究” View 时可能用到的代理函数调用顺序
  8. 机顶盒怎样配置服务器信息,网络机顶盒桌面配置服务器
  9. 为方便储户,某银行拟开发计算机储蓄系统。
  10. 【第五课】ArcCatalog和ArcToolbox初识
  11. 苹果屏保壁纸_Live Photo壁纸苹果版下载-Live Photo壁纸APP
  12. HITB_Binary_100_writeup
  13. 实验室的温湿度要求及其控制措施的详细讲解
  14. 视频教程-微信小程序从入门基础(第一季)-PHP
  15. 【drawio笔记】在图表中添加和删除图层
  16. [Python]根据ip地址计算子网掩码位数
  17. ACRO2010__系统性综述: 达到缓解的AS患者能否停用TNF拮抗剂
  18. 在线文档协作进行项目管理
  19. java的反射机制~~!
  20. 【Planning】Firm type used in R3 Planning - Manual Firm and regular run

热门文章

  1. linux 信号处理实验,linux下信号处理
  2. 手机黑圆点怎么打_黑鲨游戏手机3S手机配置怎么样,是否值得购买?
  3. 向spark standalone集群提交任务
  4. oracle创建表语句_利用FME去拼接SQL语句并创建表
  5. pandas 笔记:multi-index
  6. Python的lambda匿名函数
  7. vue修改数据连接数据库_vue实现数据的增删改查
  8. c++结构体定义和使用_[day day go]结构体amp;给结构定义方法
  9. numpy.dstack详解
  10. AutoGL:浅谈未来非常有前景的自动图机器学习相关概念