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

2023-11-09

主从复制:

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

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

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

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

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

复制的实现

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

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

心跳检测

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

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

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

  • 如何将node.js管道传输到redis?

    我有很多数据要插入 SET INCR 到redis DB 所以我正在寻找pipeline http redis io topics pipelining 质量插入 http redis io topics mass insert通过node
  • SignalR 无法连接到 SSL 上的 Azure Redis

    我目前在 Azure 上托管我的 redis 缓存服务器 并让 signalR 依赖它作为骨干 使用以下内容 GlobalHost DependencyResolver UseRedis 服务器 端口 密码 eventKey 这可以在端口
  • 使用Redis从有限范围内生成唯一ID

    我有一些数据库项目 除了主键之外 还需要项目所属组的唯一索引 我们来调用属性nbr 以及将项目分组在一起并定义唯一范围的属性nbr 我们会打电话group This nbr必须在 1 N 范围内 并且may从外部源导入项目时进行设置 由于所
  • Spring Data JPA Redis:无法编写基于自定义方法的查询

    我已经使用 Redis 配置了 Spring Data JPA 并使用RedisRepositorieswith 提供了类似的方法find findAll 所有这些方法似乎都工作得很好 但我无法编写我的自定义方法 RedisEntity f
  • Redis是如何实现高吞吐量和高性能的?

    我知道这是一个非常普遍的问题 但是 我想了解允许 Redis 或 MemCached Cassandra 等缓存 以惊人的性能极限工作的主要架构决策是什么 如何维持连接 连接是 TCP 还是 HTTP 我知道它完全是用C写的 内存是如何管理
  • redis 2.8.7 Linux Sentinel环境配置问题,如何使其自启动,应该订阅什么?

    现在我们尝试使用 redis 2 8 7 作为缓存存储 来自使用 booksleeve 客户端的 NET Web 应用程序 目前看来这是一个非常有趣和令人兴奋的任务 redis 文档非常好 但由于缺乏真正的实践经验 我确实有几个关于如何正确
  • 如何在Redis中只保存一个数据库?

    我是 Redis 新手 有一个与备份相关的问题 目前 我有一个实例在 Windows 服务器上运行 在这个实例中 我当前有一项 工作 将数据存储在一个数据库中 我不想备份这些数据 我必须创造一份新工作 我的第一个想法是将数据存储在另一个数据
  • 如何将“.csv”数据文件导入Redis数据库

    如何将 csv 数据文件导入 Redis 数据库 csv 文件中包含 id 时间 纬度 经度 列 您能否向我建议导入 CSV 文件并能够执行空间查询的最佳方法 这是一个非常广泛的问题 因为我们不知道您想要什么数据结构 您期望什么查询等等 为
  • Redis 队列工作程序在 utcparse 中崩溃

    我正在尝试按照以下教程获得基本的 rq 工作 https blog miguelgrinberg com post the flask mega tutorial part xxii background jobs https blog m
  • 在 Spring 4 中干掉通用的 RedisTemplate

    我读到你可以拥有 Autowired从 Spring 4 开始泛型 这太棒了 我有一个摘要RedisService我想参加的课程 Autowired一个通用的 RestTemplate 如下所示 public abstract class
  • docker-compose:容器之间的 Redis 连接被拒绝

    我正在尝试设置一个 docker compose 文件 该文件旨在替换运行多个进程 RQ 工作线程 RQ 仪表板和 Flask 应用程序 的单个 Docker 容器解决方案导师 http supervisord org 主机系统是 Debi
  • 如何配置Lettuce Redis集群异步连接池

    我正在配置我的生菜重新分配池 当我按照官方文档配置时 连接池无法正常初始化 无法获取连接 官方文档指出 RedisClusterClient clusterClient RedisClusterClient create RedisURI
  • Laravel Redis 配置

    我目前正在使用 Laravel 和 Redis 创建一个应用程序 几乎一切都工作正常 我按照文档中的说明扩展了身份验证 用户可以订阅 登录 注销 我可以创建内容 所有内容都存储在 Redis 中 但我有一个问题 我无法运行 php arti
  • ServiceStack.Redis:无法连接:sPort:

    我经常得到 ServiceStack Redis 无法连接 sPort 0 或 ServiceStack Redis 无法连接 sPort 50071 或其他端口号 当我们的网站比较繁忙时 就会出现这种情况 Redis 本身看起来很好 CP
  • Redis 是否使用用户名进行身份验证?

    我已经在我的环境中设置了Redis 并且只看到了通过密码授权的部分 有没有办法也设置用户名 还是只能通过密码验证 Redis 6 上有 ACL 这些都有一个用户名 查看https redis io topics acl https redi
  • 检查 Redis 列表中是否已存在某个值

    我想知道是否有办法检查 redis 列表中是否已存在某个键 我无法使用集合 因为我不想强制唯一性 但我确实希望能够检查字符串是否确实存在 Thanks 您的选择如下 Using LREM如果发现则更换它 维护一个单独的SET与您的LIST
  • nginx/uwsgi 服务器的持久内存中 Python 对象

    我怀疑这是否可能 但这是问题和提出的解决方案 提出的解决方案的可行性是这个问题的对象 我有一些需要可用于所有请求的 全局数据 我将这些数据保存到 Riak 并使用 Redis 作为缓存层以提高访问速度 目前 数据被分为约 30 个逻辑块 每
  • .NET Core 依赖注入中的“StackExchange.Redis.ConnectionMultiplexer”应该是“AddSingleton”还是“AddScope”?

    我正在使用以下命令将 Redis 连接添加到 NET CoreStackExchange Redis 目前看起来像这样 public static IServiceCollection AddRedisMultiplexer this IS
  • memcache、redis 和 ehcache 作为分布式缓存框架的比较 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要做出的决定之一是在我的系统中使用什么缓存框架 有这么多可供选择 我目前正在研究 redis ehcache 和 memcached
  • Redis - 错误:值不是有效的浮点数

    我在 Redis 中有一个排序集 我试图通过在Python代码中使用zincrby来更新特定元素的计数器值 例如 conn zincrby usersSet float 1 user1 但它显示错误为 错误 值不是有效的浮点数 我在 cli

随机推荐

  • 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