【Redis】Redis持久化模式AOF

news2024/11/25 10:50:26

目录

引言

AOF持久化模式​编辑​编辑

AOF与RDB的混合持久化(4.x后的新特性)

AOF的优缺点

修复破损aof文件

到底用RDB还是AOF


引言

AOF就相当于上面的日志形式。是追加式备份。所有发生的写操作,新增啊,修改啊,删除啊,这些命令,都会记录在这个AOF日志里。
如果追求数据的一致性,RDB会丢失最后一次的备份数据,所以往往会采用AOF来做。AOF丢失的
数据会比RDB相对来说少一些。
需要注意,redis是先执行写操作指令,随后再把指令追加进aof中。有时候奇葩的面试官会问你先后顺序,有些同学会冷不丁的犹豫一会。
特点:

  • 类似日志的形式,把所有写操作追加到文件,
  • 追加的形式是append,一个个命令追加,而不是修改
    比如说,set k1 abc,set k2 def,set k1 123,虽然有两次k1,但是不会合并,而是追加。(后面会提到压缩)
  • redis恢复的时候先恢复aof,如果aof有问题(比如破损),则再恢复rdb.|
  • redis恢复的时候是读取aof中的命令,从头到尾读一遍,然后数据恢复。
    可以通过 bgrewriteaof 手动触发。异步重写aof日志,假如重写失败,那么数据还是存在的,因为老的aof还在。
     

使用AOF引发的问题思考
Redis运行了好多年了,比如10年,用的AOF,那么假如某一天redis名机挂了
1.这个10年的AOF有 多大?最大可以占用多少空间?有没有可能达到10来个T,或者更大?

  • 按理说会,如果你吃饱了没事做,就只对某个key,新增,修改,删除,无限次的做这样的作,持续了十来年,那么这个aof文件会很大,而且都是重复的命令。但是AOF可以压缩重写,使得体积不大。

2.恢复10几个T文件的时候,内存不大会不会溢出?

  • 不会。虽然文件很大,但是有效的命令实际的不会很多。而且可以压缩重写,这样体积不大读取肯定更加快速。

3.10来个T的aof恢复需要多久,有没有可能1天?1周?

  • 按照现有情况来说,有可能吧。

以上三点都是aof文件庞大而出现的顾虑,其实aof可以重写,对日志有一个重写机制 bgrewriteaof其实也就是瘦身的作用,尝试想一想,如果一个人很胖了,不能越来越胖吧,应该时不时的运动下瘦个身,那么aof重写也是一个道理。

AOF持久化模式

AOF与RDB的混合持久化(4.x后的新特性)


yes:AOF重写,redis会把当前所有的数据以rdb形式存入到aof中,这都是二进制数据,数据量小,随后新的数据以aof形式追加到这个aof中,那么这个aof中包含两种文件类型数据,一个是rdb,一个是aof,那么恢复的时候redis会同时恢复,这样恢复过程会更快。这相当于是一个混合体。
no:关闭混合模式,aof只会压缩重复的命令,这是4.x以前老版本的机制,也就是把重复的没有意义的指令去除,减少文件体积,也减少恢复的时间。

可能会有同学会问,在重写AOF的时候,如果有新的命令进来要写入怎么办?那么他其实也会fork一个子进程,子进程复制重写,而新的那些写入命令会被记录到一个缓冲区,待子进程重写完毕后,缓冲工区的新的写命令会被追加到新的AOF文件中,这样就保持了数据在重写前后的一致性

AOF的优缺点

优点

  • 耐用性高,秒级别备份:AOF更加耐用,可以以秒级别为单位备份(通常我们都是每设置为1秒),如果发生问题,也只会丢失最后一秒的数据,大大增加了可靠性和数据完整性。所以AOF可以每秒备份一次,使用fsync操作。
  • log日志追加,不惧怕磁盘大小限制:以log日志形式追加,如果磁盘满了,会执行redis-check-aof 工具
  • aof过大重写:当数据太大的时候,redis可以在后台自动重写aof,当redis继续把日志追加到老的文件中去时,重写也是非常安全的,不会影响客户端的读写操作。
  • 日志形式更加有利于redis解析和恢复:AOF 日志包含的所有写操作,会更加便于redis的解析恢复

缺点 

  • 相同数据量,AOF比RDB大,更耗时:相同的数据,同一份数据,AOF比RDB大,而且恢复起来也会很耗时,很慢
  • 同步比RDB慢:针对不同的同步机制,AOF会比RDB慢,因为AOF每秒都会备份做写操作,这样相对与RDB来说就略低。 每秒备份fsync没毛病,但是如果客户端的每次写入就做一次备份fsync的话那么redis的性能就会下降。
  • AOF数据可能不完整:AOF发生过bug,就是数据恢复的时候数据不完整,这样显得AOF会比较脆弱,容易出现bug,因为AOF没有RDB那么简单,但是呢为了防止bug的产生,AOF就不会根据旧的指令去重构,而是根据当时缓存中存在的数据指令去做重构,这样就更加健壮和可靠了。

修复破损aof文件

如果aof文件破损,那么可以修复一些无用的命令,使得其还是可以继续恢复正常内容:
redis-check-aof --fix [aof文件名]目的:删除不符合语法的指令
aof-load-truncated yes:Redis启动加载aof,命令语法不完整则修复。设置为no,Redis启动失败,需要手动用redis-check-aof 工具修复

到底用RDB还是AOF

般来说,可以RDB+AOF的同时开启使用。上面已经说了,可以把它们作为一个混合体去使用。如果说用户对redis的写操作不多甚至没有,95%以上都是读操作,那么用rdb也没啥问题,我们有一个项目是采用的缓存预热方式,用户几乎没有写操作,所以直接采用RDB就够用了,因为哪怕redis挂了,甚至RDB没了,数据还是能通过预热重新载入。如果说你们的Redis要作为一部分的数据库来使用,那么需要用到aof,或者rdb&aof的混合模式这样数据的完整性就更大了



 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1493375.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

03. Nginx入门-Nginx虚拟主机

Nginx虚拟主机简介 yum安装与源码安装一样,只是Nginx配置文件路径不一致,这里用的yum安装的配置文件路径。 利用虚拟主机的功能,可以在一台Nginx服务器上部署一个或多个虚拟主机。 虚拟主机主配置文件 注意:配置完成Nginx主配置…

怎么申请SSL证书?——保姆级教程

一:挑选一家权威的CA机构比如:JoySSL,进入官网之后可以看到有免费的DV单域名,多域名,通配符证书。根据自己的域名类型选择适合的证书。以下我也以单域名证书举例。 永久免费SSL证书_永久免费https证书_永久免费ssl证书申请-JoySS…

【Linux】访问文件的本质|文件描述符|文件重定向

文章目录 文件的结构文件描述符标准输入输出文件描述符的规则 文件重定向输出重定向(对应符号>)echo的输出重定向 输入重定向&#xff08;对应符号<&#xff09;追加重定向&#xff08;对应符号‘>>’&#xff09;实现文件重定向的函数dup2()参数测试 前言&#xf…

语文教学方法有哪些,产生了什么效果

你是否曾想过&#xff0c;一位普通的语文老师如何化身为智慧的引导者&#xff0c;点燃学生心中的求知之火&#xff1f;让我们一起探寻那些神奇的语文教学方法&#xff0c;以及它们带来的深远影响。 不仅让知识变得容易理解&#xff0c;更在无形中培养了学生的各项能力。通过谈话…

《JAVA与模式》之命令模式

系列文章目录 文章目录 系列文章目录前言一、命令模式的结构二、AudioPlayer系统三、宏命令四、命令模式的优点 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章…

笔记本上使用usb蓝牙适配器

注意 必须先禁用笔记本上原来的蓝牙功能 禁用笔记本原来的蓝牙功能 使用usb蓝牙适配器

openEuler系统远程SSH远程连接

文章目录 1. 本地SSH连接测试2. openEuler安装Cpolar3. 配置 SSH公网地址4. 公网远程SSH连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 欧拉操作系统(openEuler, 简称“欧拉”)是面向数字基础设施的操作系统,支持服务器、云计算、边缘openEuler是面向数字基础设施的操作系…

Latent Topic-aware Multi-Label Classification

X t ^t t and X s ^s s分别是训练和测试输入矩阵 predictive model h of the mapping between X t ^t t and Y t ^t t in the training data can be applied to the testing data&#xff0c;predictive model g of the mapping between X t ^t t and X s ^s s in the input da…

免费SSL证书有效期

免费SSL证书有效期现状 目前市场上主流的免费SSL证书提供商大多遵循行业规范&#xff0c;将免费证书的有效期设为3个月。这意味着每隔三个月&#xff0c;网站管理员必须重新申请、验证并安装新的SSL证书&#xff0c;以维持网站的HTTPS安全连接状态。这种做法已成为行业的常态&…

顶顶通呼叫中心中间件-如何利用机器人话术转接到坐席中

文章目录 前言联系我们实现方法 前言 场景&#xff1a;机器人话术执行到某一节点需要转接到人工坐席中&#xff0c;且呼叫坐席超时后可以返回到机器人话术中&#xff0c;然后继续执行话术剩下的流程。 联系我们 有意向了解呼叫中心中间件的用户&#xff0c;可以点击该链接添加…

MQTT.fx下载使用详解

mqtt.fx是一款基于 Eclipse Paho&#xff0c;使用 Java 语言编写的 MQTT 客户端工具。支持通过 Topic 订阅和发布消息&#xff0c;用来前期和物联网云平台调试非常方便。 &#xff08;一&#xff09;下载软件 傻瓜式安装 链接&#xff1a;https://pan.baidu.com/s/1PxXnuIPN…

基于springboot+vue的医疗挂号管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

Tomcat实现java博客项目、状态页及常见配置介绍

目录 一、自建博客 1. 项目背景 2. 操作示例 二、状态页 1. 概述 2. server status 信息状态页 3. manager app 项目管理状态页 4. host manger 虚拟主机管理状态页 三、常见配置 1. 端口8005/tcp安全配置管理 2. tomcat端口号 3. 虚拟主机设置 4. Context配置 一…

我国离子注入设备市场规模不断增加 本土企业仍有较大发展空间

我国离子注入设备市场规模不断增加 本土企业仍有较大发展空间 离子注入是半导体器件和集成电路生产的关键工艺之一&#xff0c;其提供的高精度和高均匀性可以大幅度提高集成电路的成品率。离子注入设备是芯片制造的核心工艺装备。 从全球市场来看&#xff0c;随着科学技术不断进…

Provisional headers are shown报错原因支付宝小程序跳转页面时Ajax请求被杀死

报错 Provisional headers are shown 支付宝小程序一个页面请求没有结束&#xff0c;就跳转到了另一个页面 解决&#xff1a; - 等待请求结束再跳转 - 使用settimeout使进程在宏任务队列不会被杀死 携带参数太多&#xff0c;请求头过大导致支付宝中请求表现为无响应。【在另一…

当Sora风靡,AI风潮吹醒金融科技

以下文章来源&#xff1a;凤凰网 前有OpenAI发布了Sora&#xff0c; 后有苹果放弃了秘密进行了十年的造车项目&#xff0c;转身拥抱AI&#xff0c; 再有国内市场上此起彼伏的AI呐喊声&#xff0c; 一场以AI为主导的新热浪&#xff0c;正在来袭。 当AI的风潮开始兴盛&#x…

【视频转码】基于ZLMediakit的视频转码技术概述

一、概述 zlmediakit pro版本支持基于ffmpeg的转码能力&#xff0c;在开源版本强大功能的基础上&#xff0c;新增支持如下能力&#xff1a; 1、音视频间任意转码(包括h265/h264/opus/g711/aac等)。2、基于配置文件的转码&#xff0c;支持设置比特率&#xff0c;codec类型等参…

js设计模式:解释器模式

作用: 对文本进行解释和编译的时候,就会用到解释器模式 比如你写了一段js代码,js引擎就会去解释并执行这段代码 webpack中的各种loader就是用来解释各种文件类型的,并将其解释为js可识别的代码 示例: //翻译词库const wordList [{text:韩信前期有蓝有红,必须拿二杀。你要是…

电脑解锁后黑屏有鼠标--亲测!!不需要重装系统!!

问题&#xff1a;上周电脑黑屏&#xff0c;只有鼠标&#xff0c;鼠标还不能右键&#xff01;&#xff01; 中招&#xff1a;win10系统最新版火绒安全 &#xff0c;那你有概率获得开机黑屏套餐一份。 原因是&#xff1a;火绒把我们的explorer删除了导致黑屏&#xff0c;这个文…

医院床旁交互系统概述 -智慧护理-全视通

全视通床旁交互系统是一种先进的医疗信息技术解决方案&#xff0c;旨在改善病患与医疗团队之间的沟通与交流。该系统通过集成多种高科技设备&#xff0c;为病患在病床边提供了一站式的信息交互平台&#xff0c;从而优化了医疗服务流程&#xff0c;提升了医疗体验。 首先&#x…