缓存杂谈(七) Redis复制的完整流程

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介: Redis复制的完整流程 简述

Redis复制的完整流程

  1. slave node启动,仅仅保存 master node的信息,包括 master node的host 和IP ,但是复制的流程没开始(这个IP和端口配置在redis.config里面的slaveof配置的)
  2. slave node 内部有个定时任务,每秒检查是否有新的master node要连接和复制,如果发现,就跟Master node 建立Socket 网络连接
  3. slave node 发送 ping 命令给Master node
  4. 口令认证: 如果Master 设置了requurepass,那么Salve node 必须发送masterauth的口令过去进行认证
  5. master node第一次执行全量复制,将所有的数据发送给Slave node
  6. master node 后续持续将写命令,一步赋值给slave node

数据同步相关的核心机制

指的就是第一次slave 连接到master的时候,执行的全量复制,那个过程里面的一些细节机制

  1. master 和slave 都会维护一个offset

master会在自身不断累加offset,slave也会在自身不断累加offset

slave每秒都会上报自己的offset给master,同时master也会保存每个slave的offset

这个其实不是只是应用在全量复制上,主要是master 和 slave都维护了这个数据之后,才能知道数据不一致的情况

  1. backlog

master node有一个backlog, 默认是1MB大小

master node给slav node 复制数据时,也会将数据在backlog 中同步写一份

  1. master run id

info server 可以看到master run id

如果根据host + ip 定位到master node,是不靠谱的,如果master node重启或者数据出现了变化,那么slave node 应该根据不同的run id区分,run id不同就做全量复制

如果需要不更改run id重启redis, 可以使用redis-cli debug reload 命令

  1. psync

从节点使用psync从master node进行复制,psync runid offset

master node会根据自身的情况返回响应信息,可能是FULLRESYNC runid offset触发全量复制,可能是CONTINUE触发增量复制

全量复制
  1. master执行bgsave,在本地生成一份RDB快照
  2. master node将RDB快照文件发哦送给salve node,如果rdb复制的时间超过60s(repl-timeout),那么slave node就会认为复制失败,可以适当调节大这个参数
  3. 对于千兆网卡的机器,一般每秒传输100MB,GG文件,很可能超过60s
  4. master node在生成RDB时,会将所有新的写命令缓存在内存中,在Salve node保存了rdb之后,在给新的写命令赋值给salve node
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
8天前
|
缓存 NoSQL Redis
使用Redis实现缓存穿透的解决方案
使用Redis实现缓存穿透的解决方案
|
10天前
|
NoSQL Java Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
|
10天前
|
前端开发 NoSQL 数据库
部署常用的流程,可以用后端,连接宝塔,将IP地址修改好,本地只要连接好了,在本地上前后端跑起来,前端能够跑起来,改好了config.js资料,后端修改好数据库和连接redis,本地上跑成功了,再改
部署常用的流程,可以用后端,连接宝塔,将IP地址修改好,本地只要连接好了,在本地上前后端跑起来,前端能够跑起来,改好了config.js资料,后端修改好数据库和连接redis,本地上跑成功了,再改
|
17天前
|
缓存 负载均衡 NoSQL
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
34 1
|
7天前
|
缓存 NoSQL Redis
使用Redis实现缓存穿透的解决方案
使用Redis实现缓存穿透的解决方案
|
10天前
|
缓存 监控 NoSQL
若依修改----监控相关,主要包括在线用户,数据监控,服务监控,缓存监控,缓存列表,缓存监控有助于帮我们搞清楚redis的缓存情况,数据监控的密码控制台管理用户名和密码在application-dru
若依修改----监控相关,主要包括在线用户,数据监控,服务监控,缓存监控,缓存列表,缓存监控有助于帮我们搞清楚redis的缓存情况,数据监控的密码控制台管理用户名和密码在application-dru
|
10天前
|
前端开发 JavaScript NoSQL
软件开发常见流程之若依项目修改,前后端本地启动,本地必须有Redis+Navicate启动数据库
软件开发常见流程之若依项目修改,前后端本地启动,本地必须有Redis+Navicate启动数据库
|
14天前
|
缓存 NoSQL Java
Spring Boot整合Redis缓存的最佳实践
Spring Boot整合Redis缓存的最佳实践
|
13天前
|
存储 消息中间件 缓存
apt安装Redis 7
【7月更文挑战第2天】
|
17天前
|
存储 NoSQL 关系型数据库
Redis系列学习文章分享---第一篇(Redis快速入门之初始Redis--NoSql+安装redis+客户端+常用命令)
Redis系列学习文章分享---第一篇(Redis快速入门之初始Redis--NoSql+安装redis+客户端+常用命令)
42 1