Redis进阶 - Redis主从工作原理详解
文章目录
- 主从配置
- 主从工作原理
- 全量复制
- 增量复制
- 主从复制风暴
主从配置
简要回顾一下,Redis的主从配置
- 复制一份redis.conf文件
- 将相关配置修改为如下值:
port 6380pidfile /var/run/redis_6380.pid # 把pid进程号写入pidfile配置的文件logfile "6380.log"dir /usr/local/redis-5.0.3/data/6380 # 指定数据存放目录
- 配置主从复制
replicaof 127.0.0.1 6379 # 从本机6379的redis实例复制数据,Redis 5.0之前使用slaveofreplica-read-only yes # 配置从节点只读
- 启动从节点
redis-server redis.conf
- 连接从节点
redis-cli -p 6380
- 测试在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主从工作原理详解相关推荐
- nginx配置文件及工作原理详解
nginx配置文件及工作原理详解 1 nginx配置文件的结构 2 nginx工作原理 1 nginx配置文件的结构 1)以下是nginx配置文件默认的主要内容: #user nobody; #配置用 ...
- sync.Map低层工作原理详解
sync.Map低层工作原理详解 目录 为什么需要sync.Map?适合什么场景? sync.Map内部实现基本原理及结构体分析 sync.Map低层工作原理 1. 为什么需要sync.Map?适合什 ...
- ASP.NET页面与IIS底层交互和工作原理详解 (二)
第三回: 引言 Http 请求处理流程 和 Http Handler 介绍 这两篇文章里,我们首先了解了Http请求在服务器端的处理流程,随后我们知道Http请求最终会由实现了IHttpHandler ...
- camera (13)---智能手机双摄像头工作原理详解:RBG +RGB, RGB + Mono
智能手机双摄像头工作原理详解:RBG +RGB, RGB + Mono 由于双摄技术的快速发展,目前已经衍生出了几种不同的双摄硬件和算法配置解决方案.不同手机厂商可能有不同的双摄配置,比如华为荣耀P9 ...
- ASP.NET页面与IIS底层交互和工作原理详解(一)
第一回: 引言 我查阅过不少Asp.Net的书籍,发现大多数作者都是站在一个比较高的层次上讲解Asp.Net.他们耐心.细致地告诉你如何一步步拖放控件.设置控件属性.编写CodeBehind代码,以实 ...
- 有刷直流电机工作原理详解
有刷直流电机工作原理详解 来源:网络整理• 2018-05-10 09:00 • 56380次阅读 有刷直流电机被广泛用于从玩具到按钮调节式汽车坐椅的应用中.有刷直流 (Brushed DC,BDC) ...
- 晶体三极管结构及其工作原理详解
晶体三极管基本概述 晶体管是一种与其他电路元件结合使用时可产生电流增益.电压增益和信号功率增益的多结半导体器件.因此,晶体管称为有源器件,而二极管称为无源器件.晶体管的基本工作方式是在其两端施加电压时 ...
- FTP协议及工作原理详解
FTP协议及工作原理详解 1. FTP协议 什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写. 该协议是Internet文件传送的 ...
- 卡尔曼滤波工作原理详解
卡尔曼滤波工作原理详解 网上看到有不少的博客翻译 How a Kalman filter works, in pictures, 这篇文章中非常有趣的解释了卡尔曼滤波,. 但是目前很多翻译的文章中公式 ...
最新文章
- redhat linux创建磁盘分区,redhat6.4 挂载硬盘,创建新分区,删除分区
- 人类究竟有多喜欢看热闹?! | 今日最佳
- 周华健,歌声伴我成长(四)
- Java基础---继承详解--this/supper---方法的重写与重载
- 【maven配置】IDEA自动生成的pom文件报错:URI Is Not Registered
- C# WinFrom 用Execl做模版进行数据导入简介
- 构建“.NET研究” View 时可能用到的代理函数调用顺序
- 机顶盒怎样配置服务器信息,网络机顶盒桌面配置服务器
- 为方便储户,某银行拟开发计算机储蓄系统。
- 【第五课】ArcCatalog和ArcToolbox初识
- 苹果屏保壁纸_Live Photo壁纸苹果版下载-Live Photo壁纸APP
- HITB_Binary_100_writeup
- 实验室的温湿度要求及其控制措施的详细讲解
- 视频教程-微信小程序从入门基础(第一季)-PHP
- 【drawio笔记】在图表中添加和删除图层
- [Python]根据ip地址计算子网掩码位数
- ACRO2010__系统性综述: 达到缓解的AS患者能否停用TNF拮抗剂
- 在线文档协作进行项目管理
- java的反射机制~~!
- 【Planning】Firm type used in R3 Planning - Manual Firm and regular run
热门文章
- linux 信号处理实验,linux下信号处理
- 手机黑圆点怎么打_黑鲨游戏手机3S手机配置怎么样,是否值得购买?
- 向spark standalone集群提交任务
- oracle创建表语句_利用FME去拼接SQL语句并创建表
- pandas 笔记:multi-index
- Python的lambda匿名函数
- vue修改数据连接数据库_vue实现数据的增删改查
- c++结构体定义和使用_[day day go]结构体amp;给结构定义方法
- numpy.dstack详解
- AutoGL:浅谈未来非常有前景的自动图机器学习相关概念