| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Redis主从同步(详解+图) -> 正文阅读 |
|
[大数据]Redis主从同步(详解+图) |
目录 redis主从同步(解决并发能力问题)假设有A、B两个实例,如何让B作为A的slave节点? ? ? ? ? 在B节点执行命令:slaveof? A的IP? A的端口 全量同步主从第一次连接时会执行全量同步,将master节点所有的数据拷贝给slave节点 ? master如何判断一个slave是否是第一次同步?【slave原本也是一个master,有自己的replication id和offset,与master连接时,将自己的relication id 和offset发送给master,master收到relication id后,发现与自己的relication id不一致,master就可以判断该slave是第一次连接,于是开始全量同步,master会将自己的replid和offset都发送给这个slave,slave保存这些信息,master和slave的replid就保持一致了】 全量同步过程
增量同步? 增量同步过程
???????? ????????不一致:全量同步 ??????? ?????????一致:去repl_baklog中获取offset后的数据
master与slave的数据差异部分在repl_baklog文件,repl_baklog中会记录Redis处理过的命令日志及offset,包括master当前的offset,和slave已经拷贝到的offset; slave和master的offset之间的差异就是slave需要拷贝的数据了; repl_baklog原理repl_baklog这个文件是一个固定大小的数组,只不过数组是环形,也就是说角标到达数组末尾后,会再次从0开始读写,这样数组头部的数据就会被覆盖。 数组一旦写满,再有新数据写入时,就会覆盖数组的旧数据。此时slave来增量同步,发现自己offset已经被覆盖了,此时只能全量同步。 可以从以下几个方面来优化Redis主从就集群:
? ? 全量同步和增量同步区别?全量同步:master将完整内存数据生成RDB,发送RDB到slave。后续命令则记录在repl_baklog,逐个发送给slave。 增量同步:slave提交自己的offset到master,master获取repl_baklog中从offset之后的命令给slave 什么时候执行全量同步?slave节点第一次连接master节点时 slave节点断开时间太久,repl_baklog中的offset已经被覆盖时 什么时候执行增量同步?slave节点断开又恢复,并且在repl_baklog中能找到offset时 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 9:24:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |