redis设计与实现读书笔记——复制

《Redis设计与实现》读书笔记-复制 在redis 通过向从服务器发送命令:SLAVE OF,让从服务器复制主服务器,成为复制。复制的目的 让从服务器与主服务器数据保持一致。部分重同步通过复制偏移量、复制积压缓冲区、服务器运行 ID 三个部分来实现,重点解决断线重连全量复制的低效问题。在复制操作刚开始的时候,从服务器会成为主服务器的客户端,并通过向主服务器发送命令请求来执行复制步骤,而在复制操作的后期,主从服务器会互相成为对方的客户端。 阅读详情

Redis的复制功能分为同步和命令传播两个操作:同步操作用于将从服务器的数据库状态更新至主服务器当前所处的数据库状态;命令传播操作则用于在主服务器的数据库状态被修改,导致从服务器的数据库状态出现不一致时,让主从服务器的数据库重新回到一致状态。

 

完整重同步:

  1. 从服务器向主服务器发送SYNC命令
  2. 收到SYNC命令的主服务器执行BGSAVE命令,在后台生成一个RDB文件,并使用一个缓冲区记录从现在开始执行的所有写命令。
  3. 当主服务器的BGSAVE命令执行完毕时,主服务器会将BGSAVE命令生成的RDB文件发送给从服务器,从服务器接收并载入这个RDB文件,将自己的数据库状态更新至主服务器执行BGSAVE时的数据库状态
  4. 主服务器将记录在缓冲区里面的所有写命令发送给从服务器,从服务器执行这些写命令,将自己的数据库状态更新至主服务器数据库当前所处的状态

部分重同步:需要记录1.主服务器的复制偏移量和从服务器的复制偏移量 2.主服务器的复制积压缓冲区 3.服务器的运行ID

复制的实现

  1. 设置主服务器的地址和端口:客户端向从服务器发送slave of命令
  2. 建立套接字连接:在slave of 命令执行之后,从服务器将根据命令所设置的IP地址和端口,创建向主服务器的套接字连接
  3. 发送PING命令

ping命令的两个作用:

  1. 检查套接字的读写状态是否正常
  2. 检查主服务器能否正常处理命令请求

从服务器发送PING命令后将遇到三种可能的情况

  1. 如果主服务器向从服务器返回了一个命令回复,但从服务器不能再规定时间内读取出命令回复的内容,表示主从服务器之间的网络连接状态不佳,不能继续执行复制工作的后续步骤
  2. 如果主服务器向从服务器返回一个错误,表示主服务器暂时不能处理从服务器的命令请求,不能继续执行复制工作的后续步骤
  3. 如果从服务器读到PONG回复,表示连接正常,继续执行复制的下个步骤
  1. 身份验证
  2. 发送端口信息
  3. 同步:主服务器需要成为从服务器的客户端
    1. 如果PSYNC命令执行的是完整重同步操作,那么主服务器需要成为从服务器的客户端,才能将保存在缓冲区里面的写命令发送给从服务器执行
    2. 如果PSYNC命令执行的是部分重同步操作,那么主服务器需要成为从服务器的客户端,才能向从服务器发送保存在复制积压缓冲区里面的写命令
  4. 命令传播

 

《Redis设计与实现》读书笔记-客户端 Redis 服务器是典型的一对多服务器程序:一个服务器可以与多个客户端建立网络连接,每个客户端可以向服务器发送命令请求,而服务器则接收并处理客户端发送的命令请求,并向客户端返回命令回复。通过使用由1/0多路复用技术实现的文件事件处理器,Redis 服务器使用单线程单进程的方式来处理命令请求,并与多个客户端进行网络通信。对于每个与服务器进行连接的客户端,服务器都为这些客户端建立了相应的redis.h/ 阅读详情

相关推荐

利用LTspice设计Pt100测温电路

是一种广泛使用的温度传感器,它属于(RTD, Resistance Temperature Detector)的类型,通常用于温度测量。在0°C时,的电阻值为100欧姆,且它的电阻值会随着温度的升高而升高。PT100热电阻温度阻值对应表)因此可以根据这一特性来检测出环境温度。

2301_77033628的博客 2417

Redis

网站的用户群的增加,访问量的上升,传统数据库出现性能瓶颈,web程序不饿能专注功能上,同时要追求性能。NOSQL数据库应运而生,具体解决以下三高问题。High Scalabilitv && High Availabilitv 对数据库的高可扩展和高可用的需求。Huge Storagfe 海量数据的高效率存储和访问需求。NOSQL(NotOnly SQL)泛指非关系型数据库。High performance 数据库高并发读写需求。为什么需要NOSQL。.............................

java后端攻城狮 365

XC7Z010-1CLG400C开发板ADC引脚配置全攻略(附完整引脚列表)

本文详细解析了XC7Z010-1CLG400C开发板的ADC引脚配置方法,涵盖XADC模块基础、CLG400封装的引脚布局、硬件设计规范及Vivado工程配置实战。特别提供了完整的引脚列表和性能优化技巧,帮助开发者高效实现模拟信号采集,适用于Zynq-7000系列开发。

weixin_29188043的博客 466

redis的主从复制

文章目录1,redis的复制是什么2,旧版redis的复制功能同步命令传播旧版本复制得缺点3,新版的复制部分完整重同步的实现 1,redis的复制是什么 对于redis来说,单机的布置是当然不够的,这时候就需要多个redis节点,当有多个节点的时候,就要确定谁是主机,谁是从机,还有数据的一致性问题。为了维护数据的一致性问题,从机就要从主机复制数据,要使两台机器的数据处于同一个阶段,这就是redis的复制。在执行slaveof(现在采用replicaof)命令后就会进行复制。 从机A的Ip地址:端口号 sla

qq_47938856的博客 691

Windows本地部署Ollama+qwen本地大语言模型Web交互界面并实现公网访问

本文主要介绍如何在Windows系统快速部署Ollama开源大语言模型运行工具,并安装Open WebUI结合cpolar内网穿透软件,实现在公网环境也能访问你在本地内网搭建的大语言模型运行环境。近些年来随着ChatGPT的兴起,大语言模型 LLM(Large Language Model)也成为了人工智能AI领域的热门话题,很多大厂也都推出了自己的大语言模型,并或多或少的开源了自己的大语言模型,今天就来分享一个最近很火,且对于小白来说比较好上手本地部署的运行本地LLM的工具Ollama。

迪之的博客 1652

BIDS数据存储格式介绍与dcm2bids安装与使用

BIDS格式&dcm2bids安装与使用

machinelearning_er的博客 7317

Redis主从数据同步过程:命令传播、部分重同步、复制偏移量等

从服务器使用SYNC进行初次数据同步后,主、从服务器的数据库状态并不是每时每刻都保持一致的,这种情况反而是常态。向主服务器发送心跳检测命令,如果主服务器超过1s没有收到replconf命令,说明主从服务器的网络连接有问题了。这种情况Redis主服务器会将造成主从服务器数据不一致的写命令,即最近执行的写命令,发送给从服务器执行。在心跳检测时的过程中,如果主服务器发现他们的复制偏移量不一致,就会通过该偏移量找到从服务器。后,主从服务器的偏移量就会 + N。从服务器执行命令后,主、从服务器的数据也就同步了。

程序员-杨胡广的博客 1286

2019年数学建模美赛经验总结

北京时间2019年1月29号上午9时,数模美赛结束。美赛结束已经10多天了,我在这次竞赛中负责建模和编程,趁现在记忆还比较清晰,写下这篇博客记录第一次参加数学建模美赛的经历。 补更:2019年4月20日公布成绩,笔者最终获得了美赛一等奖 目录 1、基本情况 2、选题 3、分工合作 4、论文写作 5、建模 6、编程 7、入门资源 ...

Smallactive 7万+

Redis源码解读(二十一)——命令传播

主从同步—命令传播的实现

yh88623131的博客 904

27、自闭症儿童治疗与玩具设计研究

本研究探讨了自闭症儿童的治疗方法与玩具设计之间的关联,分析了游戏疗法、音乐疗法和职业疗法等在治疗中的应用,并介绍了多种针对自闭症儿童的治疗玩具案例。通过用户研究和多学科合作,提出了以Pro-Ability为核心的设计理念,开发了结合音乐疗法和精细运动训练的智能玩具套件。研究总结了当前成果与局限性,并展望了未来发展方向,旨在为自闭症儿童提供更有效的康复支持。

keras9composer的博客 211

ABAP链接外围数据库SQL实战案例

这是一个ABAP 直接读取SQL数据库数据的实例,以此种方式可以将SAP与外围的系统做一些集成,比如生产,SAP本身生产这部分是弱项,管不了那么细,很多车间的数据都是在MES系统,如管理上需要则可以将MES的一些数据自动读取过来,结合SAP本身的业务数据,做一些分析是比较方便的。 1、首先在SAP里建立数据库链接:DBCO ,直接增加一条记录,填上数据库的相关信息:IP地址、数据库名、账号SA、密码这些。 2、开发程序,设置成自动运行的计划,固定时间自动读取SQL里的数据,保存到SAP自定义表.

heng0757的专栏 1511

Redis 源码解析 - Redis 命令传播

Redis命令传播主要涉及主从节点间的数据同步过程,确保主节点上的数据变更能够被正确地传播到各个从节点,保持数据的一致性。这一过程在Redis的复制(Replication)机制中实现,分为全量同步和增量同步两种模式。

qq_33240556的博客 513

华为OD机试真题-查找单入口空闲区域(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【查找单入口空闲区域】,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 查找单入口空闲区域。

qq_45776114的博客 1268

读书笔记:《Redis设计与实现》之Redis复制原理

将从服务器的数据库状态更新至主服务器当前所处的数据库状态。

fronge的博客 1398

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

《Redis设计与实现》——读书笔记之Redis主从复制

目录主从复制的概念旧版主从复制同步命令传播旧版复制功能的缺陷新版主从复制部分重同步的实现复制偏移量复制积压缓冲区服务器运行IDPSYNC命令实现复制的实现 主从复制的概念 主从复制就是将一台Redis服务器上面的数据,复制到其他的Redis服务器,前者称为Redis主节点(master)后者称为从节点(salve)。且数据的复制是单向的,只能是从主节点到从节点。Redis支持主从同步和丛丛同步,丛...

weixin_41927235的博客 439

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

《Redis设计与实现》读书笔记——复制、Sentinel、集群

1、复制    用SLAVEOF命令让一个服务器(从)去复制另一个服务器(主)。例如127.0.0.1:12345> SLAVEOF 127.0.0.1 6379,127.0.0.1:12345将成为127.0.0.1:6379的从服务器。    (1)旧版复制功能实现,分为同步和命令传播两个操作。当执行SLAVEOF时,首先执行同步操作,【1】从服务器向主服务器发送SYNC命令【2】主服务...

weixin_39420024的博客 439

Redis设计与实现读书笔记五、Redis主从复制

文章目录一、主从复制1、旧版复制功能的实现1.1 同步1.2 命令传播2、旧版复制功能的缺陷3、新版复制功能的实现4、部分重同步的实现4.1 复制偏移量4.2 复制积压缓冲区4.3 服务器运行ID5、PSYNC命令的实现6、复制的实现6.1 步骤1:设置主服务器的地址和端口6.2 步骤2:建立套接字连接6.3 步骤3:发送PING命令6.4 步骤4:身份验证6.5 步骤5:发送端口信息6.6 步骤6:同步6.7 步骤7:命令传播7、心跳检测7.1、检测主从服务器的网络连接状态7.2 辅助实现min-sla.

小宇哥x的博客 232

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

主从复制: 在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另一个服务器,我们称呼被复制的服务器为主服务器(master),而对主服务器进行复制的服务器则被称为从服务器(slave)。 如果从服务器创建的套接字能成功连接(connect)到主服务器,那么从服务器将为这个套接字关联一个专门用于处理复制工作的文件事件处理器,这个处理器将负责执行后续的复制工作,比如接收RDB文件,以及接收主服务器传播来的写命令,诸如此类。 PSYNC

只作为个人备忘录 240

Redis设计与实现读书笔记-AOF,RDB,复制

Redis Redis特性: 1.Redis是一个键值对数据库服务器, 服务器中通常包含着任意个非空数据库, 而每个非空数据库中又可以包含任意个键值对,为了方便起见, 我们将服务器中的非空数据库以及它们的键值对统称为数据库状态。 2.Redis是内存数据库,它将自己的数据库状态储存在内存里面,一旦服务器进程退出, 服务器中的数据库状态也会消失不见。所以redis有两种机制可以将数据库状态保存...

weixin_30535565的博客 436

Redis设计与实现读书笔记---复制/Sentinel/集群

复制 复制模式:用户通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器区复制另一个服务器。 旧版复制功能 Redis的复制功能分为同步(sync)和命令传播(command propagate); 同步操作用于将从服务器的数据状态更新至主服务器当前所在的数据库状态; 命令传播操作则用于在主服务器的数据库状态被修改,导致主从服务器状态不一致的情况时,通过命令传递,将主从服务器的数据库状态从新回到一致状态; 同步 从服务器对主服务器的同步操作需要通过向主服务器发送SYNC命令来完成; 从服务器

生蛋的公鸡的博客 206

(七)、主重复制---Redis设计与实现读书笔记

1、概述 一个服务器去复制另一个服务器,被复制服务器为主服务器(master)、对主服务器进行复制的服务器为从服务器(slave)。 命令: SLAVEOF “主服务器IP” “主服务器端口号” 2、2.8之前版本主从复制实现 Redis的主从复制功能分为"同步"和"命令传播" 用户向从服务器发送SLAVEOF命令时,从服务器对主服务器执行同步操作,主从服务器数据达到一致性状态 主服...

qq_34092585的博客 4656

《Redis设计与实现》读书笔记-第三部分:多机数据库的实现-1:复制

目录 1.旧版复制功能的实现 1.1同步 ​1.2命令传播 ​2.旧版复制功能的缺陷 3.新版复制功能的实现 4.部分同步的实现 4.1复制偏移量 4.2复制积压缓冲区 4.3服务器运行ID 5.PSYNC命令的实现 6.复制的实现 6.1步骤1:设置主服务器的地址和端口 6.2步骤2:建立套接字连接 6.3步骤3:发送PING命令 6.4步骤4:身份验证 6.5步骤5:发送端口信息 6.7步骤6:同步 6.7步骤7:命令传播 7.心跳检测 7...

PnJgHT的博客 1060

实现动态表头_《Redis设计与实现》读书笔记

《Redis设计与实现》读书笔记​www.woojean.com关系数据库并不直接支持交集计算操作,要计算两个集合的交集,除了需要对两个数据表执行合并(join)操作之外,还需要对合并的结果执行去重复(distinct)操作,最终导致交集操作的实现变得异常复杂。《Redis设计与实现》读书笔记关系数据库并不直接支持交集计算操作,要计算两个集合的交集,除了需要对两个数据表执行合并(join)操作之外...

weixin_35339622的博客 243

Redis设计与实现读书笔记

Redis、读书笔记、Redis源码分析、Redis原理分析

一个有信仰的技术人 1338

读书笔记:《redis设计与实现》(第一部分)

感觉自己弱了,就多读点书,最近感觉对redis的理解有些弱,所以,找了一本书, 黄健宏的 《Redis设计与实现》,写了一些读书笔记与摘抄, 与各位牛马们共勉。

fronge的博客 1660

《redis设计与实现》 读书笔记

读书笔记 一、前言 什么是redis: Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。简而言之redis就是放在远程网络上的一个key-value数据结构。 redis的使用场景: Redis可以用来做cache,也可以用来做持久化db,甚至用来做队列。队列就是存储临时性数据,而cache主要存储那些用...

kangbin825的专栏 2746
上一篇: redis设计与实现读书笔记——事件
下一篇: redis设计与实现读书笔记——sentinel
CCCCC_SSSSS
博客等级 码龄10年 3粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值