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…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...

C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...

MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

Redis上篇--知识点总结
Redis上篇–解析 本文大部分知识整理自网上,在正文结束后都会附上参考地址。如果想要深入或者详细学习可以通过文末链接跳转学习。 1. 基本介绍 Redis 是一个开源的、高性能的 内存键值数据库,Redis 的键值对中的 key 就是字符串对象,而 val…...

基于Python的气象数据分析及可视化研究
目录 一.🦁前言二.🦁开源代码与组件使用情况说明三.🦁核心功能1. ✅算法设计2. ✅PyEcharts库3. ✅Flask框架4. ✅爬虫5. ✅部署项目 四.🦁演示效果1. 管理员模块1.1 用户管理 2. 用户模块2.1 登录系统2.2 查看实时数据2.3 查看天…...