Redis知识分享(三)
目录
前言
七、事务管理
7.1事务中的异常处理
八、订阅发布
8.1概述
8.2.Redis针对发布订阅相关指令
九、主从复制
9.1主从复制概述
9.2.主从复制的用处
9.3主从复制实现原理
9.3.1.psync指令
9.3.2.复制偏移量
9.3.3复制积压缓冲区&节点ID
前言
今天接着分享redis,本次分享的主要是事务管理、订阅发布和主从复制。
七、事务管理
事务的本质,其实就是一组命令的集合。一个事务中的所有命令都会按照命令的顺序去
执行,而中间不会被其他命令加塞。

7.1事务中的异常处理
-
命令语法错误。针对语法错误,会导致整个事务执行被中断

-
运行操作错误针对执行中的异常,只会导致该条指令的执行失败,而不会影响事务中其他的指令。

八、订阅发布
8.1概述
如果熟悉消息中间件,那么对发布订阅一定不陌生。发布者Publish一条消息,消息发送
到Channel通道中,然后所有订阅了这个通道的订阅者Subscriber都会接收到这条消息。
如下图所示:
8.2.Redis针对发布订阅相关指令

九、主从复制
9.1主从复制概述
主从复制,是指将一台Redis服务器的数据复制到其他的Redis服务器。前者称为主节点
(Master/Leader),后者称为从节点(Slave/Follower);数据是从主节点复制到从节
点的。其中,主节点负责写数据(当然有读的权限),从节点负责读数据(它没有写数
据的权限)。默认的配置下,每个Redis都是主节点。
一个主节点可以有多个从节点,但是一个从节点只能有一个主节点,即:主从节点是1对N的关系。

9.2.主从复制的用处
- 数据冗余。主从复制实现了数据的备份,实际上提供了数据冗余的实现方式。
- 故障恢复。当主节点出现异常时,可以由从节点提供服务,实现快速的故障恢复,实际上提供了服务冗余的实现方式。
- 负载均衡。在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务,分担服务器的负载;在写少读多的业务场景下,通过多个从节点分担读负载,可以大大提高Redis服务器是并发量。
- 高可用。哨兵配合主从复制,可以是实现Redis集群的高可用。
9.3主从复制实现原理
Redis的主从复制可以分为两个阶段:sync阶段和command propagate阶段。当从节点启
动后,会发送sync指令给主节点,要求全量同步数据,此为sync阶段;那么,如果后续
Master节点接收到新的增删改操作,也需要Slave节点接收同步的更新,这就是command
propagate阶段;
9.3.1.psync指令
当主从节点都正在运行的时候,出现了网络抖动,造成连接断开,那么当网络恢复,两个
节点再次建立起连接的时候。从节点发送sync指令后,主节点依然需要重新生成RDB,并
对从节点进行全量数据的同步造成。那么这中间的耗时是非常严重的,并且传输备份文件
也会对网络带宽造成很大的消耗。那么为了解决这个问题,从Redis 2.8开始,引入了psync指令来代替sync指令。psync指令会根据不同的情况,来确定执行全量重同步还是部分重同步。
- 全量重同步。当从节点是第一次与主节点建立连接的时候,那么就会执行全量重同步,这个同步过程与上面我们介绍的sync阶段+command propagate阶段一样。
- 部分重同步。从节点的复制偏移量无法在复制积压缓冲区中找相应待同步的数据 并且 主节点与从节点不是第一次同步(根据Redis节点ID判断)
9.3.2.复制偏移量
Master节点和Slave节点都保存着一份复制偏移量。当Master节点每次向Slave节点发送n
字节数据的时候,就会在Master节点偏移量加上n;而Slave节点每次接收到n个字节的
时候,也会在Slave节点偏移量上加n。在命令传播阶段,Slave节点会定期的发送心跳
REPLCONF ACK{offset}指令,这里的offset就是Slave节点的offset。当Master节点接
收到这个心跳指令后,会对比自己的offset和命令里的offset,如果发现有数据丢失,那
么Master节点就会推送丢失的那段数据给Slave节点。如下图所示:
9.3.3复制积压缓冲区&节点ID
什么是复制积压缓冲区?
复制积压缓冲区是由主节点维护的一个固定长度(默认1MB)的队列。它存储了每个字
节值与对应的复制偏移量。因为复制积压缓冲区的大小是固定的,所以它保存的是主节点近
期执行的写命令。当从节点将offset发送给主节点后,主节点便会根据offset与复制积压缓
冲区的大小来决定是否可以使用部分重同步。如果offset之后的数据仍然在复制积压缓冲区
内,则执行部分重同步;否则还是执行全量重同步。
节点ID
Redis节点服务启动之后,就会产生一个用来唯一标识Redis节点的ID。当Master节点与
Salve节点进行第一次连接同步的时候,Master节点会将ID发送给Slave节点,Slave节点接收
到会对其进行保存。那么当主从服务之间发生了中断重连的时候,Slave服务器会将这个ID
发送给Master服务器,Master服务器会拿自己的ID进行对比,如果相同,则说明主从之前是
连接过的。否则,则说明是第一次建立的连接。那么,就需要全量去同步数据了。
相关文章:
Redis知识分享(三)
目录 前言 七、事务管理 7.1事务中的异常处理 八、订阅发布 8.1概述 8.2.Redis针对发布订阅相关指令 九、主从复制 9.1主从复制概述 9.2.主从复制的用处 9.3主从复制实现原理 9.3.1.psync指令 9.3.2.复制偏移量 9.3.3复制积压缓冲区&节点ID 前言 今天…...
python安装包报错
多次安装均报错 ERROR: Could not find a version that satisfies the requirement win10toast ERROR: No matching distribution found for win10toast 然后还提示 WARNING: Retrying (Retry(total4, connectNone, readNone, redirectNone, statusNone)) after connectio…...
Linux性能优化之火焰图简介
Linux 火焰图(Flame Graph)是一种可视化工具,用于分析程序性能问题,尤其是 CPU 使用情况。它展示了程序中函数调用的层次结构和各个调用栈占用的时间比例。 以下是详细介绍,包括火焰图的工作原理、生成步骤和实际使用中…...
Unity类银河战士恶魔城学习总结(P129 Craft UI 合成面板UI)
【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了合成面板的UI设置 UI_CraftWindow.cs 字段作用: UI 组件: itemName / itemDescription / icon&#…...
linux基础笔试练习题笔记(2)
在Linux系统上,下面那个命令不可以用来查看文件内容() A.cat B.ls C.less D.more 答案解析: cat命令用用于一次性显示文件的所有内容,一般文件内容较多时一般会使用more或less命令。 more:分页显示文件内容…...
Android OpenGL ES详解——glTexImage2D方法
glTexImage2D是OpenGL中的一个重要函数,其作用是为2D纹理分配显存并上传数据。以下是关于glTexImage2D作用的详细解释: 一、函数原型 在OpenGL ES 2.0中,glTexImage2D的函数原型如下: GL_APICALL void GL_APIENTRY glTexImage2…...
Redisson 中开启看门狗(watchdog)机制
在分布式系统中,分布式锁是一种常用的技术手段,用于确保在多个节点同时访问共享资源时的一致性和正确性。Redisson 是一个强大的 Java 分布式框架,它提供了丰富的分布式数据结构和服务,其中开启看门狗(watchdog&#x…...
【JSOO】设计模式
单例模式工厂模式状态模式观察者模式桥接模式 设计模式(是一种通过经验中总结出来的经过反复验证能够解决一类通用问题的可以反复重用的就可称它为模式,否则只能称为功能模块);模式:把解决问题的方法抽取出来ÿ…...
本草纲目数字化:Spring Boot在中药实验管理中的应用
1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理中药实验管理系统的相关信息成为必然。开发…...
java八股-jvm入门-程序计数器,堆,元空间,虚拟机栈,本地方法栈,类加载器,双亲委派,类加载执行过程
文章目录 PC Register堆虚拟机栈方法区(Metaspace元空间双亲委派机制类加载器 类装载的执行过程 PC Register 程序计数器(Program Counter Register)是 Java 虚拟机(JVM)中的一个组件,它在 JVM 的内存模型中扮演着非常…...
重构Action-cli前端脚手架
一、概述 最近一年,为了满足公司业务开发,解决重复搭建项目繁琐过程,自己开发了一个前端脚手架,并发布到npm。随着时间的推移,发现之前的版本存在很多问题,有些功能做不到位,而且代码也不是很规…...
华为USG5500防火墙配置NAT
实验要求: 1.按照拓扑图部署网络环境,使用USG5500防火墙,将防火墙接口加入相应的区域,添加区域访问规则使内网trust区域可以访问DMZ区域的web服务器和untrust区域的web服务器。 2.在防火墙上配置easy-ip,使trust区域…...
【大数据学习 | HBASE高级】hive操作hbase
一般在查询hbase的数据的时候我们可以直接使用hbase的命令行或者是api进行查询就行了,但是在日常的计算过程中我们一般都不是为了查询,都是在查询的基础上进行二次计算,所以使用hbase的命令是没有办法进行数据计算的,并且对于hbas…...
集群聊天服务器(9)一对一聊天功能
目录 一对一聊天离线消息服务器异常处理 一对一聊天 先新添一个消息码 在业务层增加该业务 没有绑定事件处理器的话消息会派发不出去 聊天其实是服务器做一个中转 现在同时登录两个账号 收到了聊天信息 再回复一下 离线消息 声明中提供接口和方法 张三对离线的李…...
《FreeRTOS列表和列表项篇》
FreeRTOS列表和列表项 1. 什么是列表和列表项?1.1 列表list1.2 列表项list item 2. 列表和列表项的初始化2.1 列表的初始化2.2 列表项的初始化 3. 列表项的插入4. 列表项末尾插入5. 列表项的删除6. 列表的遍历 列表和列表项是FreeRTOS的一个数据结构,是F…...
C++:哈希拓展-位图
目录 一.问题导入 二.什么是位图? 2.1如何确定目标数在哪个比特位? 2.2如何存放高低位 2.3位图模拟代码实现 2.3.1如何标记一个数 2.3.2如何重置标记 2.3.3如何检查一个数是否被标记 整体代码实现 标准库的Bitset 库中的bitset的缺陷 简单应用 一.问题导入 这道…...
【数据结构与算法】查找
文章目录 一.查找二.线性结构的查找2.1顺序查找2.2折半查找2.3分块查找 三.树型结构的查找3.1二叉排序树1.定义2.二叉排序树的常见操作3.性能分析 3.2平衡二叉树1.定义2.平衡二叉树的常见操作3.性能分析 3.3B树1.定义2.B树的相关操作 3.4B树1.定义2.B树与B树的比较 四.散列表1.…...
从零开始学习 sg200x 多核开发之 milkv-duo256 编译运行 sophpi
sophpi 是 算能官方针对 sg200x 系列的 SDK 仓库 https://github.com/sophgo/sophpi ,支持 cv180x、cv81x、sg200x 系列的芯片。 SG2002 简介 SG2002 是面向边缘智能监控 IP 摄像机、智能猫眼门锁、可视门铃、居家智能等多项产品领域而推出的高性能、低功耗芯片&a…...
LLM - 使用 LLaMA-Factory 微调大模型 Qwen2-VL SFT(LoRA) 图像数据集 教程 (2)
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/143725947 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 LLaMA-…...
基于STM32设计的大棚育苗管理系统(4G+华为云IOT)_265
文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】设计意义【5】国内外研究现状【6】摘要1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发1.5 参考文献1.6 系统框架图1.7 系统原理图1.8 实物图1.9…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
