redis设计与实现读书笔记-主从复制

2023-11-09

主从复制:

在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另一个服务器,我们称呼被复制的服务器为主服务器(master),而对主服务器进行复制的服务器则被称为从服务器(slave)。

如果从服务器创建的套接字能成功连接(connect)到主服务器,那么从服务器将为这个套接字关联一个专门用于处理复制工作的文件事件处理器,这个处理器将负责执行后续的复制工作,比如接收RDB文件,以及接收主服务器传播来的写命令,诸如此类。

PSYNC命令具有完整重同步(full resynchronization)和部分重同步(partialresynchronization)两种模式:

❑其中完整重同步用于处理初次复制情况:完整重同步的执行步骤和SYNC命令的执行步骤基本一样,它们都是通过让主服务器创建并发送RDB文件,以及向从服务器发送保存在缓冲区里面的写命令来进行同步。

❑而部分重同步则用于处理断线后重复制情况:当从服务器在断线后重新连接主服务器时,如果条件允许,主服务器可以将主从服务器连接断开期间执行的写命令发送给从服务器,从服务器只要接收并执行这些写命令,就可以将数据库更新至主服务器当前所处的状态。

复制的实现

设置主服务器的地址和端口-》建立套接字连接-》发送PING命令-》身份验证-》发送端口信息-》同步-》命令传播

命令传播当完成了同步之后,主从服务器就会进入命令传播阶段,这时主服务器只要一直将自己执行的写命令发送给从服务器,而从服务器只要一直接收并执行主服务器发来的写命令,就可以保证主从服务器一直保持一致了。

心跳检测

在命令传播阶段,从服务器默认会以每秒一次的频率,向主服务器发送命令,通过向主服务器发送命令来进行心跳检测,以及命令丢失检测

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

redis设计与实现读书笔记-主从复制 的相关文章

  • 连接到 localhost:6379 时出现错误 99。无法分配请求的地址

    设置 我有一个虚拟机 并在虚拟机中运行三个容器 一个 nginx 代理 一个非常简约的 Flask 应用程序和 redis Flask 应在端口 5000 上提供服务 而 redis 应在 6379 上提供服务 这些容器中的每一个都可以作为
  • 找不到模块“socket.io/node_modules/redis”

    当尝试做的时候 var redis require socket io node modules redis 我收到错误 找不到模块 socket io node modules redis 我不明白为什么 我正在运行 Windows 并运
  • 仅当尚未设置时才进行原子设置

    仅当尚未在 Redis 中设置时 是否有办法执行原子设置 具体来说 我正在创建一个像 myapp user user email 这样的用户 并且希望 Redis 在 user email 已被占用时返回错误 而不是默默地替换旧值 比如声明
  • 如何使用Spring Cache处理redis异常?

    我目前正在开发一个包含 Spring Data Redis 和 Spring Cache 的项目 在spring data redis中 我使用redis模板调用redis 我在 try catch 块中处理 redis 模板抛出的所有异常
  • 如何在节点redis客户端上设置读取超时?

    在 github 上我没有看到读取超时的选项 https github com NodeRedis node redis https github com NodeRedis node redis There s connect timeo
  • 如何统计 Redis 流中未读或已确认的消息?

    使用 Redis 5 0 3 假设我们创建一个名为streamy和一个消费群体consumers XGROUP CREATE streamy consumers MKSTREAM 然后向其中添加一些消息 XADD streamy messa
  • 如何设置 Celery 以通过 ssl 与 Azure Redis 实例对话

    使用 的伟大答案 如何在microsoft azure上的django项目中配置celery redis https stackoverflow com questions 39616701 how to configure celery
  • 库存管理系统的 SQL 与 NoSQL

    我正在开发一个基于 JAVA 的网络应用程序 主要目的是拥有在多个称为渠道的网站上销售的产品的库存 我们将担任所有这些渠道的管理者 我们需要的是 用于管理每个渠道的库存更新的队列 库存表 其中包含每个通道上分配的正确快照 将会话 ID 和其
  • redis-cli 重定向到 127.0.0.1

    我在PC1上启动Redis集群 然后在PC2上连接它 当需要重定向到另一个集群节点时 它会显示Redirected to slot 7785 located at 127 0 0 1 但应该显示Redirected to slot 7785
  • Redis 排序集和解决关系

    我正在使用 Redis 排序集来存储我正在处理的项目的排名 我们没有预料到 我们想要如何处理关系 Redis 按字典顺序对具有相同分数的条目进行排序 但我们想要做的是对具有相同分数的所有条目给予相同的排名 例如在以下情况 redis 127
  • 通过 StackExchange.Redis 连接到 Redis Servier

    我尝试使用以下方法制作一个测试项目Redis https redis io服务器 通过 Virtual Box 安装在 Linux Ubuntu 虚拟机上 Linux 机器通过 Virtual Box 的桥接适配器与本地网络连接 Virtu
  • 在 Kubernetes/Openshift 中将客户端-服务器流量保持在同一区域的最佳方法?

    我们运行兼容 Kubernetes OKD 3 11 的本地 私有云集群 其中后端应用程序与用作缓存和 K V 存储的低延迟 Redis 数据库进行通信 新的架构设计将在两个地理上分布的数据中心 区域 之间平均划分工作节点 我们可以假设节点
  • 使用 Redis 命令 incr 和 expire 时的竞争条件

    根据redis文档 http redis io commands incr http redis io commands incr 在段落模式 速率限制器 2 较短的版本代码 value INCR ip IF value 1 THEN EX
  • 有没有办法在 ruby​​ 中重新定义 []=+

    我正在尝试编写一个简单的 DSL 针对 Redis 并且我想自己定义 I have def key val redis zadd name val key end 我想定义 def key val redis zincrby name va
  • Node Js:Redis 作业在完成其任务后未完成

    希望你们做得很好 我在我的 Nodejs 项目中实现了 BullMQ Bull 的下一个主要版本 来安排发送电子邮件的作业 例如 发送忘记密码请求的电子邮件 所以 我编写了如下所示的代码 用户服务 await resetPasswordJo
  • Redis Cluster 与 Pub/Sub 中的 ZeroMQ,用于水平扩展的分布式系统

    如果我要设计一个巨大的分布式系统 其吞吐量应随系统中的订阅者数量和通道数量线性扩展 哪个会更好 1 Redis集群 仅适用于Redis 3 0 alpha 如果是集群模式 您可以在一个节点上发布并在另一个完全不同的节点上订阅 消息将传播并到
  • redis - 使用哈希

    我正在使用 redis 为我的 Web 应用程序实现社交流和通知系统 我是 redis 的新手 我对哈希值及其效率有一些疑问 我读过这篇很棒的文章Instagram 帖子 http instagram engineering tumblr
  • 如何使redis中的“HSET”子键“过期”?

    我需要使 Redis 哈希中所有超过 1 个月的密钥过期 这不可能 https github com antirez redis issues 167 issuecomment 2559040 为了保持 Redis 简单 https git
  • redis dump.rdb / 保存小文件

    Context 我正在使用redis 数据库小于 100 MB 但是 我想进行每日备份 我也在 Ubuntu Server 12 04 上运行 当输入 redis cli save 我不知道 dump rdb 保存到哪里 因为 redis
  • 在 Redis 上为 Django 和 Express.js 应用程序共享会话存储

    我想创建一个包含一些登录用户的 Django 应用程序 另一方面 由于我想要一些实时功能 所以我想使用 Express js 应用程序 现在的问题是 我不希望身份不明的用户访问 Express js 应用程序的日期 因此 我必须在 Expr

随机推荐

  • Shiro权限框架-限制密码重试次数(8)

    1 实现原理 保证原子性 单系统 AtomicLong计数 集群系统 RedissionClient提供的RAtomicLong计数 1 获取系统中是否已有登录次数缓存 缓存对象结构预期为 用户名 登录次数 2 如果之前没有登录缓存 则创建
  • 【ElementUI样式优化1】el-table 修改斑马格样式、修改滚动条样式、添加表头边框、删除表格边框划线

    重要的不是过去 而是你怎末看待过去 而我们对过去的看法 是可以改变的 效果预览 1 删除表格外框 内框 2 添加表头边框 修改表头文字大小 颜色 3 斑马格修改颜色 选中行高亮颜色修改 4 修改滚动条样式 目录 一 原始样式说明 1 斑马纹
  • 试用许可常见问题解析

    从安装许可驱动 到正确配置试用许可 大家可能会遇到的各种问题 本文针对各类问题逐一介绍以及使用产品过程中许可中心异常的解决办法 在SuperMap 7C及8C系列产品中 均使用是LicenseCenter来配置及管理所有产品的许可 在安装i
  • husky无法工作 commit 提交代码时husky不生效解决方法

    husky无法工作原因 新版本 husky 中存在严重错误 https github com typicode husky issues 326 解决方法 安装低版本即可 yarn remove husky yarn add husky 4
  • Linux:C语言实现面向接口编程

    在Linux环境下 实现面向接口编程可以使用C语言中的函数指针来实现 具体步骤如下 定义接口 定义一个接口 包含一组函数指针 这些函数指针代表了该接口的方法 例如 我们可以定义一个名为 Interface 的接口 cCopy code ty
  • flow对性能的影响

    不同高中低端ROUTER 其netflow处理性能果然相差很大低端10000f s是极限 中端40000f s 高端60000f s 且还有simpled这个杀手锏 低端ROUTER 2600 2800 3600 3700 来说 采集100
  • 使用Python爬取前程无忧上南京地区Python职位以及对应工资

    获取原始数据 最近在学习Python 做了一个爬虫程序练练手 前程无忧这个网站页面布局还是挺简单的 适合我这种新手 使用requests bs4爬取 不多说了 先来看看页面布局吧 这是前程无忧上的职位列表 看上去还是很清楚的 然后再来看看页
  • systemctl start network 启动网卡服务报错解决方法

    systemctl start network 启动网卡服务报错 root apache systemctl restart network Job for network service failed because the contro
  • Hibernate之查询中get()和load()的区别,list()和iterate()的区别

    Hibernate 之查询中get 和load 的区别 list 和iterate 的区别 list 查询 一次性把数据对象取出来 Test public void findTestList Session s sessionFactory
  • python3 面试题总结

    Python global 语句的作用 lambda 匿名函数好处 Python 错误处理 Python 内置错误类型 简述 any 和 all 方法 Python 中什么元素为假 提高 Python 运行效率的方法 Python 单例模式
  • LeetCode63. 不同路径 II

    不同路径 II 一个机器人位于一个 m x n 网格的左上角 起始点在下图中标记为 Start 机器人每次只能向下或者向右移动一步 机器人试图达到网格的右下角 在下图中标记为 Finish 现在考虑网格中有障碍物 那么从左上角到右下角将会有
  • Halcon三维模型预处理(1):调平的三大手法

    面结构光拍摄生成的点云模型 往往相对系统坐标系是有角度的 首先讲一下调平的目的 1 为接下来的预处理切除背景面做准备 3 不做调平 后续处理会很麻烦 因为不清楚坐标系在平台的为位置 2 对于无序抓取项目 平台相对相机可能是有角度的 将抓取平
  • socket和mongodb

    socket 创建一个socket 然后连接server url net Socket 发送信息给服务器 socket通信 client可以进行数据的编写和发送 服务器 只有一个 只有开启了服务器 客户端才能进行连接 mongodb 关系型
  • 归并排序(简单易懂的代码)

    归并排序是一种很重要的排序算法 体现的是分而治之的思想 很多的算法题的解法会借用这种算法思想 在这里使用C 编程实现归并排序 供自己回忆 供他人参考 include
  • 单元测试--重构

    一 单元测试 1 在没写函数内容代码前 就要写单元测试类 每个测试类中有TestSuite 2 如果写单元测试很困难 那么可能是你对要测试的函数不是很了解 如果不是则可能是设计的问题 也许要重构 二 重构1 不要存在代码重复的现象 若有 且
  • Android-布局管理器

    线性布局 Linearlayout 属性 orientation 布局管理器内组件的排列方式 horizontal 水平 和vertical 垂直 默认值为 horizontal layout weight 权重 用于设置组件占父容器剩余空
  • 网易云音乐播放器部分问题集

    这周在做网易云音乐播放器 这期间遇到了不少问题 下面就来记录一下我所遇到的部分问题 一 接口问题 调用网易云的接口 网上一搜方法一大堆 但是我的理解有些问题 硬生生搞了好久 下面就给那个方法再重新小白化一遍TAT 安装环境 首先你要有nod
  • FastAPI Web框架 [Pydantic]

    学习一下 做个记录 Starlette Pydantic 与 FastAPI 的关系 Python 的类型提示 type hints Pydantic 是一个基于 Python 类型提示来定义数据验证 序列化和文档 使用JSON 模式 库
  • 基于Arduino IDE 和ESP32-CAM 制作远程摄像头

    说明 具体教程及详细步骤参考 arduino esp32 cam环境配置和例程使用 在这里仅仅针对个人在开发过程中的一点经验及上文帖子没提到的一些部分做一个总结 因为我当初根据这个教程做的时候有以下几点是导致我一开始浪费了大量时间精力的 特
  • redis设计与实现读书笔记-主从复制

    主从复制 在Redis中 用户可以通过执行SLAVEOF命令或者设置slaveof选项 让一个服务器去复制 replicate 另一个服务器 我们称呼被复制的服务器为主服务器 master 而对主服务器进行复制的服务器则被称为从服务器 sl