当前位置: 首页 > news >正文

redis之高可用

(一)redis之高可用

1、在集群当中有一个非常重要的指标,提供正常服务的时间的百分比(365天)99.9%

2、redis的高可用的含义更加广泛,正常服务是指标之一,数据容量的扩展、数据的安全性

3、在redis中实现高可用的技术

(1)持久化
(2)主从复制
(3)哨兵模式
(4)cluster集群

(二)持久化(RDB/AOF)(重点)

1、持久化:最简单的高可用方法,主要作用是数据备份,也就是把redis缓存在内存中的数据保存到本地的硬盘当中(冷备份—停止服务备份)

2、redis持久化的两种方式

(1)RDB持久化:redis在内存中的数据定时保存到磁盘(自动执行、手动执行)(生产中很少使用)
(2)AOF持久化:redis的操作日志,以追加的方式写入一个AOF的文件,类似于mysql的binlog

(三)RDB持久化

1、RDB:指在指定的时间间隔内,将内存中当前进程中的数据生成快照保存到硬盘(快照持久化),用二进制压缩存储,保存的文件名后缀.rdb,redis启动时可以直接读取快照文件,实现数据恢复

2、RDB的触发机制

(1)手动机制:save、bgsave都可以生成RDB文件
save创建RDB文件时,整个redis进程会被阻塞,期间redis将无法进行读写操作,直到RDB文件创建完整为止(生产中禁止用save生成RDB文件)
bgsave:就是主从复制的机制。特点:主进程会通过fork机制创建一个子进程,子进程创建的过程中,主进程会阻塞,子进程创建完毕,主进程解除阻塞,由子进程创建RDB文件,创建完成之后,通知主进程更新通知信息(重点)

③bgsave的工作流程

关闭服务(冷备份):

恢复:

(2)自动机制(/ect/redis/6379.conf)
除了配置文件的save m n之外,还有:
①主从复制,从节点执行全量复制操作,直接执行bgsave,把RDB文件传送给从节点
②关闭主进程,shutdown之后,会自动指定RDB的持久化
③启动时加载,RDB文件被损坏,日志中会打印错误,redis会拒绝启动
④redis-check-rdb工具修复RDB的持久化文件

save 900 1:表示当时间到900秒时,redis的数据至少发生一次变化,就执行bgsave

save 300 10:表示当时间到300秒时,redis的数据至少发生十次变化,就执行bgsave

save 60 10000:表示当时间到60秒时,redis的数据至少发生一万次变化,就执行bgsave

时间间隔不能太短,执行不能太频繁(数据变动的越多,执行的时间越短,数据变动不大,时间间隔要长一点)

生产中一般设置:save 120 1000、save 60 10000

rdbcompression yes

开启RDB文件的压缩功能,在高并发场景建议关闭

(生产中默认是no)

(四)AOF持久化(生产中普遍使用)

1、AOF持久化是将redis的每一次读、写、删除命名记录到一个单独的.aof结尾的文件,查询操作由主进程记录,当redis重启时,再次执行AOF文件中的命令来恢复数据

2、AOF的实时性更好,也是主流的持久化方案

3、RDB是redis的默认持久化文件,但是一旦开启AOF持久化,那么redis会以AOF的持久化文件作为最高级优先级

 

aof-load-truncated yes:用于判断AOF文件是否被截断,发现被截断(写入过程中出现异常,导致文件未能完全写入)(重点)

AOF文件被截断时:

设置为yes,redis会尽可能的恢复文件中的数据,redis会继续运行

设置为no,发现AOF文件被截断,redis会拒绝启动

数据完整祥的要求高:设置No

注重数据服务器的可用性:设置yes

4、AOF的工作流程(自动机制:编辑vim appendonly.aof)

(五)AOF的重写功能(重点)

1、重写的原因:随着时间增长,AOF文件中的数据也会不断增加,AOF的文件也会越来越大,过大的AOF文件不仅仅会影响服务器的正常运行,也会导致数据恢复的时间过长

2、文件重写:是指定期的重写AOF文件,减小AOF文件的体积,AOF重写是把redis进程内的数据转化为写命令,同步到新的AOF文件中(不会额外的生成一个新的文件,只是在原内容中进行压缩),不会对原有的AOF文件进行任何读写的操作

3、文件重写虽然是AOF持久化强烈推荐的,但不是必须的,没有重写,并不影响redis启动时读取数据,在实际中,会关闭自动的文件重写,通过定时任务来完成

4、重写机制的工作路程(重点)

5、AOF同步文件策略的三种方式

(1)appendfsync always:写入过程中,立刻调用redis系统的fsync操作写入到AOF文件,这次写入都执行同步,硬盘的性能有瓶颈,硬盘的寿命会大大降低(不推荐)

(2)appendfsync everysec命名写入,调用write操作,write操作结束后,write线程会返回,fsync同步文件操作由专门的线程每秒同步一次(这是一个折中的策略,是性能和安全性的平衡,是redis的默认配置,也是推荐配置)

(3)appendfsync no:写入操作调用系统的write操作,不对AOF文件进行同步,操作系统来同步,同步周期30秒,文件同步的时间不可控,缓冲区会堆积大量数据,数据的安全也无法保证

6、重写的触发条件

(1)手动触发:redis-cli bgrewriteaof

(2)自动触发(配置配置文件):

auto-aof-rewrite-percentage 100

表示文件的大小超过基准的百分比,默认值就是100,文件的大小超过两倍时,执行bgrewriteaof,设置为0,表示禁用自动触发(100M—200M—400M)

*若要创建定时任务,可以设置为0,或者注释掉

auto-aof-rewrite-min-size 64mb(必须要有):

表示只有文件大于基准值,才会进行重写,这个值是AOF执行重写的最小值,可以避免开始启动redis后,文件太小,然后频繁的进行重写

7、AOF重写为什么能压缩文件

(1)重写的过程中,如果有过期的数据不会写入文件
(2)无效的命令不再写入文件,数据被重复设置(set test 1,set test 2),删除的数据也不会写入
(3)把多条命令合并成一个
例:sadd test1 1 sadd test1 2 sadd test1 3——sadd test1 1 2 3
(4)重写之后,AOF的文件当中的命令减少了,空间也少了,恢复速度也增加了(重写不是必须的,根据需求——重点

(六)RDB和AOF之间的优缺点

1、DRB

(1)RDB的优点:RDB文件体积小,网络传输速度很快,适合全量复制,恢复速度也比AOF要快
(2)RDB的缺点:做不到实时的持久化,数据如此重要,不能容忍丢失的;RDB需要满足特定的格式,兼容性很差,老版本的RDB不支持新版本(redis的版本要一致,redis的版本:5.0.7)

2、AOF

(1)AOF的优点:秒级持久化,兼容性好(文本格式保存的命名,命令通用)
(2)AOF的缺点:文件大,恢复速度慢,AOF持久化需要频繁的向磁盘写入数据,磁盘的I/O压力很大,对redis 主进程的性能也会有一定影响

(七)持久化总结

1、redis的持久化也算是高可用的一种,通过备份文件来恢复数据(冷备份)

2、RDB:save(线上禁用),bgsave

3、AOF:

(1)实时持久化,写入的是操作命令,除了查(set和del会记录,select和get不记录)。实时记录,恢复方式类似于mysql的binlog
(2)重写(推荐但是不是必须的):也是主进程创建一个子进程,在过程中产生的数据以及同步策略都会写入到AOF文件当中

相关文章:

redis之高可用

(一)redis之高可用 1、在集群当中有一个非常重要的指标,提供正常服务的时间的百分比(365天)99.9% 2、redis的高可用的含义更加广泛,正常服务是指标之一,数据容量的扩展、数据的安全性 3、在r…...

使用 Core Tools 在本地开发 Azure Functions

学习模块 使用 Core Tools 在本地创建和运行 Azure Functions - Training | Microsoft Learn 文档 使用 Core Tools 在本地开发 Azure Functions | Microsoft Learn GitHub - Azure/azure-functions-core-tools: Command line tools for Azure Functions 其它 安装适用于 A…...

Java零基础——Spring篇

1.Spring框架的介绍 1.1 传统的项目的架构 在传统的项目中,一般遵循MVC开发模型。 (1) view层与用户进行交互,显示数据或者将数据传输给view层。 (2) 在controller层创建service层对象,调用service层中业务方法。 (3) 在service层创建dao…...

jenkins清理缓存命令

def jobName "yi-cloud-operation" //删除的项目名称 def maxNumber 300 // 保留的最小编号&#xff0c;意味着小于该编号的构建都将被删除 Jenkins.instance.getItemByFullName(jobName).builds.findAll { it.number < maxNumber }.each { it.delet…...

什么是深度学习

一、深度学习的发展历程 1.1 Turing Testing (图灵测试) 图灵测试是人工智能是否真正能够成功的一个标准&#xff0c;“计算机科学之父”、“人工智能之父”英国数学家图灵在1950年的论文《机器会思考吗》中提出了图灵测试的概念。即把一个人和一台计算机分别放在两个隔离的房…...

数字IC基础:有符号数和无符号数加、减法的Verilog设计

相关阅读 数字IC基础https://blog.csdn.net/weixin_45791458/category_12365795.html?spm1001.2014.3001.5482 本文是对数字IC基础&#xff1a;有符号数和无符号数的加减运算一文中的谈到的有符号数加减法的算法进行Verilog实现&#xff0c;有关算法细节请阅读原文&#xff0…...

2023年11月25日(星期六)骑行三家村

2023年11月25日 (星期六) 骑行三家村(赏红杉林&#xff09;&#xff0c;早8:30到9:00&#xff0c; 大观公园门囗集合&#xff0c;9:30准时出发 【因迟到者&#xff0c;骑行速度快者&#xff0c;可自行追赶偶遇。】 偶遇地点:大观公园门口集合 &#xff0c;家住东&#xff0c;南…...

.skip() 和 .only() 的使用

.skip() 和 .only() 的使用 说明 在做自动化测试中&#xff0c;跳过执行某些测试用例&#xff0c;或只运行某些指定的测试用例&#xff0c;这种情况是很常见的Cypress中也提供了这种功能 如何跳过测试用例 通过describe.skip() 或者 context.skip() 来跳过不需要执行的测试…...

如何证明特征值的几何重数不超过代数重数

设 λ 0 \lambda_0 λ0​ 是 A A A 的特征值&#xff0c;则 λ 0 \lambda_0 λ0​ 的代数重数 ≥ \geq ≥ 几何重数 证明 假设 A A A 的特征值 λ 0 \lambda_0 λ0​ 对应的特征向量有 q 维&#xff0c;记为 α 1 , . . . , α q \alpha_1, ... , \alpha_q α1​,...,…...

Android修行手册-POI操作Excel文档

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…...

浅析教学型数控车床使用案例

教学型数控车床是一种专为教学和培训设计的机床&#xff0c;它具有小型化、高精度和灵活性的特点&#xff0c;可以作为学校和技术学院的培训机器。下面是一个使用案例&#xff0c;以展示教学型数控车床在教学实训中的应用。 案例背景&#xff1a; 某职业技术学院的机械工程专业…...

图论 2023.11.20

次短路 P2829 大逃离 题意&#xff1a;给定一个无向图&#xff0c;入口1&#xff0c;出口n,求第二短路的值 一个节点所直接连接的地方小于k个&#xff08;起点和终点除外&#xff09;&#xff0c;那么他就不敢进去。 n<5000&#xff0c;m<100000 思路&#xff1a;次短路…...

思福迪 运维安全管理系统 test_qrcode_b 远程命令执行漏洞

思福迪 运维安全管理系统 test_qrcode_b 远程命令执行漏洞 一、漏洞描述二、漏洞影响三、网络测绘四、漏洞复现1.手动复现2.自动化复现3.python源代码 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任…...

electron项目开机自启动

一、效果展示&#xff1a;界面控制是否需要开机自启动 二、代码实现&#xff1a; 1、在渲染进程login.html中&#xff0c;画好界面&#xff0c;默认勾选&#xff1b; <div class"intro">开机自启动 <input type"checkbox" id"checkbox&quo…...

2023年约特干故城夜间演艺《万方乐奏有于阗》完美谢幕

11月19日&#xff0c;记者走进约特干故城看到演员在欢乐地跳着刀郎舞和古典舞&#xff0c;庆祝今年以来夜间演艺《万方乐奏有于阗》演出200场完美谢幕。 11月19日在约特干故城&#xff0c;演员正在表演迎宾乐舞。阿卜力克木依卜拉依木摄 当天晚上&#xff0c;城楼上旌旗猎猎&am…...

学习网络编程No.10【深入学习HTTPS】

引言&#xff1a; 北京时间&#xff1a;2023/11/14/18:45&#xff0c;因为种种原因&#xff0c;上个月的文章昨天才更新&#xff0c;目前处于刷题前夕&#xff0c;算法课在看了。这次和以前不一样&#xff0c;因为以前对知识框架没有很好的理念&#xff0c;并不清楚相关知识要…...

ubuntu下docker环境使用GPU配置

本文主要讲述整个命令流程&#xff0c;具体讲解请看官网nvidia-容器工具包和一篇总结得很详细的博文docker使用GPU总结 docker的版本必须安装19.0版本以上的&#xff0c;这里也只讲19.0版本以上的使用方法 首先设置一下网络信息 curl -fsSL https://nvidia.github.io/libnvi…...

渗透工具---BurpSuite 插件开发之HelloWorld

本文主要记录如何利用burp官方的新版API即MontoyaApi 写helloworld&#xff08;上一篇的demo使用旧版api写的&#xff0c;这篇及后续开发将采用新版api&#xff09; 先看效果图 更多详细内容见下方 这里有更详细更全面的代码内容 以及配置相关的内容 https://mp.weixin.qq.co…...

2216. 美化数组的最少删除数

我的做法&#xff1a; 使用一个index作为检查坐标&#xff0c;当index为偶数时检查当前数和后一个数是否相等&#xff0c;相等的话&#xff0c;后一个数设置为-1&#xff0c;注意如果相等&#xff0c;要把相等的数保留下来last&#xff0c;以便接下来检查&#xff0c;防止出现2…...

竞赛 题目:基于深度学习的人脸表情识别 - 卷积神经网络 竞赛项目 代码

文章目录 0 简介1 项目说明2 数据集介绍&#xff1a;3 思路分析及代码实现3.1 数据可视化3.2 数据分离3.3 数据可视化3.4 在pytorch下创建数据集3.4.1 创建data-label对照表3.4.2 重写Dataset类3.4.3 数据集的使用 4 网络模型搭建4.1 训练模型4.2 模型的保存与加载 5 相关源码6…...

Cursor Free VIP:三步解锁AI编程助手Pro功能完整指南

Cursor Free VIP&#xff1a;三步解锁AI编程助手Pro功能完整指南 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your tria…...

AI视频总结怎么做?多模态AI从音视频到结构化知识的实践

摘要&#xff1a; 视频总结是内容从业者的刚需——但手动做视频总结太耗时间。本文探讨多模态AI技术&#xff08;语音视觉文本&#xff09;如何实现自动化视频总结&#xff0c;分析当前主流方案&#xff0c;并分享如何利用多模态能力高效完成视频转笔记、构建个人知识库。 一、…...

终极键盘控制鼠标指南:用Mouseable彻底解放你的双手

终极键盘控制鼠标指南&#xff1a;用Mouseable彻底解放你的双手 【免费下载链接】mouseable Mouseable is intended to replace a mouse or trackpad. 项目地址: https://gitcode.com/gh_mirrors/mo/mouseable 你是否厌倦了在键盘和鼠标之间频繁切换&#xff1f;是否因长…...

对比直接使用官方API体验Taotoken在稳定性与路由上的优势

对比直接使用官方API体验Taotoken在稳定性与路由上的优势 对于直接调用过各大模型厂商API的开发者而言&#xff0c;服务稳定性与可用性是构建可靠应用的关键考量。当单一供应商的服务出现波动或中断时&#xff0c;应用的连续性将面临挑战。本文将基于实际使用体验&#xff0c;…...

利用 Taotoken 多模型聚合能力为智能客服系统提供稳定后端

利用 Taotoken 多模型聚合能力为智能客服系统提供稳定后端 构建智能客服对话系统时&#xff0c;后端模型服务的稳定性、成本可控性和对不同场景的适应性是关键考量。直接对接单一模型供应商&#xff0c;可能会面临服务波动、模型能力与场景不匹配或成本超出预期等问题。Taotok…...

Cursor AI编辑器版本管理实战:从下载到配置的完整指南

1. Cursor AI 编辑器&#xff1a;为什么你需要一个版本管理仓库 如果你是一名开发者&#xff0c;尤其是深度依赖 AI 辅助编程的开发者&#xff0c;那么 Cursor 这个名字对你来说一定不陌生。它被许多人誉为“AI 代码编辑器的未来”&#xff0c;凭借其深度集成的 AI 能力&…...

构建个人知识中枢:从信息孤岛到数字记忆宫殿的技术实践

1. 项目概述&#xff1a;一个为知识工作者打造的“数字记忆宫殿”同步工具最近在折腾个人知识管理&#xff08;PKM&#xff09;系统时&#xff0c;我遇到了一个几乎所有深度思考者都会面临的困境&#xff1a;信息碎片化。灵感可能来自手机备忘录、电脑上的Markdown笔记、网页剪…...

3分钟永久备份QQ空间:GetQzonehistory完整历史说说导出指南

3分钟永久备份QQ空间&#xff1a;GetQzonehistory完整历史说说导出指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否还记得那些年发过的QQ空间说说&#xff1f;那些深夜的感慨…...

M9A:解放双手的《重返未来:1999》智能自动化助手——如何每周节省8小时游戏时间?

M9A&#xff1a;解放双手的《重返未来&#xff1a;1999》智能自动化助手——如何每周节省8小时游戏时间&#xff1f; 【免费下载链接】M9A 重返未来&#xff1a;1999 小助手 | Assistant For Reverse: 1999 项目地址: https://gitcode.com/gh_mirrors/m9/M9A 在《重返未…...

别再滥用单例了!试试Unity中的事件总线(Event Bus)模式,轻松实现组件间通信

告别单例依赖&#xff1a;用事件总线重构Unity组件通信架构 在Unity项目开发中&#xff0c;我们经常遇到这样的场景&#xff1a;背包系统需要更新UI提示&#xff0c;角色受伤要触发音效播放&#xff0c;任务完成需要通知多个系统更新状态。面对这些跨组件的通信需求&#xff0c…...