码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 这样讲Redis 主从复制的工作原理,或许你真的能听懂~


    主从复制的架构

    • 一主一从
    • 一主多从

    主从复制的作用

    • 数据备份
    • 读写分离

    主从复制的工作原理

    • runid

    主节点的runid,从节点第一次请求复制主节点的时候,主节点会将此runid返回

    • offset(偏移量)

    当前数据的偏移量,例如执行一条指令后,产生一条数据后,会增大偏移量,从节点请求复制主节点的时候,会带上这个信息,让主节点从这个偏移量之后的数据返回给我。

    全量复制

    • 建立连接后,从节点向主节点发送psync命令,请求同步,携带 runid和offset,如果第一次同步,传 ?和-1
    • 主节点收到psync请求后,发现runid为?和offset为-1,则知道从节点希望全量复制,于是将自己的runid和offset返回给从节点
    • 主节点执行bgsave,生成RDB文件,在此期间生成的命令全部放到buffer中
    • 主节点将生成后的rdb文件,传输给从节点
    • 从节点收到rdb文件后,首先清除自己的数据,然后将rdb文件加载到内存
    • 主节点再把缓冲区的命令发给从节点
    • 从节点再把缓冲区的命令加载到内存

    增量复制

    如果由于网络问题出现抖动或连接断开,则会导致主从复制不同步,所以当网络连接正常时,则主从之间将发生增量复制而不是全量复制。

    • 从节点向主节点发送psync 命令 携带 已保存的runid和offset
    • 主节点判断runid是否和自己的id一致,如果不一致则执行全量同步
    • 主节点判断offset是否在环形缓冲区内,如果不在泽执行全量同步
    • 否则执行增量同步

  • 相关阅读:
    Python+appium 自动化测试-Android 端环境配置
    【C++】继承(C++重中之重)(学习与复习兼顾)
    关于Linux下Redis自动化部署的一些笔记
    算法基础之字符串哈希
    Java | 生产者和消费者模型
    Leetcode:整数转罗马数字
    火伞云Web应用防火墙的特点与优势
    一个简单的WEB网页制作作业——黑色的山河旅行社网站(5个页面)HTML+CSS+JavaScript
    pycharm统计代码运行时间
    Opencv实现目标检测
  • 原文地址:https://blog.csdn.net/weixin_34311210/article/details/127595337
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号