AOF每一秒钟写入一次。当内容才写了一小半,没有写完整时,突然,redis挂了,导致aof文件错误。

故意乱写正常的AOF文件,模拟网络闪断文件写error
重启 Redis 之后就会进行AOF文件的载入,发现启动都失败


首先cd /usr/local/bin 异常修复命令:redis-check-aof -- fix 进行修复

不需要三个都修复,修复incr即可。


重新OK

42 redis持久化之AOF优缺点案例总结

AOF优势

1.使用AOF Redis更加持久:您可以有不同的fsync【写回】策略:根本不fsync、每秒fsync、每次查询时fsync。使用每秒fsync的默认策略。写入性能仍然很棒。fsync是使用后台线程执行的,当没有fsync正在进行时,主线程将努力执行写入,因此您只能丢失一秒钟的写入【最差的情况就是丢失1秒】。

2.AOF日志是一个仅附加日志,因此不会出现寻道问题,也不会在断电时出现损坏问题。即使由于某种原因(磁盘已满或其他原因)日志以当一半的命令结尾,redis-check-aof 工具也能够轻松修复它。

仅附加日志:AOF 文件在记录数据变更时是追加写入(append-only)的。每次执行写命令(如 SET, DEL, INCR 等),Redis 都会把这个命令的文本形式写入到 AOF 文件的末尾。

  • 不会修改已有的数据内容。

  • 类似于一个不断增长的操作历史记录。

寻道问题:传统关系型数据库(如 MySQL、PostgreSQL)使用的是复杂的数据结构和存储策略,比如:B+树索引结构。写入一条记录可能要更新记录页,索引页等等,这些页通常分散在磁盘的不同位置,因此需要多次寻道来定位并修改。而AOF因为只做追加写入,文件指针总是在文件末尾,不需要频繁地移动文件指针来读写不同位置(这就叫“寻道”)。

为什么不会在断电时出现损坏问题?

由于 AOF 是顺序写,且每条写命令在写入前可以通过 fsyncfdatasync 确保刷入磁盘,即使突然断电:

  • 只可能丢失“最后一条命令”,而不是导致整个文件损坏。

  • 不会出现“中间内容被破坏”的问题。

3.当AOF变得太大时,Redis能够在后台自动重写AOF,重写是完全安全的,因为当Redis继续附加到旧文件时,会使用创建当前数据集所需的最少操作集生成一个全新的文件,一旦第二个文件准备就绪,Redis就会切换两者并开始附加到新的那一个。

4.·AOF以易于理解和解析的格式依次包含所有操作的日志。您甚至可以轻松导出AOF文件。例
如,即便您不小心使用该FLUSHALL命令刷新了所有内容,只要在此期间没有执行日志重写,您
仍然可以通过停止服务器、删除最新命令并重新启动Redis来保存您的数据集。

进入aof文件存储的路径

vim appendonly.aof.1.incr.aof

删除最后一条FLUSHALL命令

总结:更好的保护数据不丢失,性能高,可做紧急恢复

AOF缺点

1.AOF文件通常比相同数据集的等效RDB文件大。
2.根据确切的fsync策略,AOF可能比RDB慢。一般来说,将fsync设置为每秒性能仍然非常高,并且在禁用fsync的情况下,即使在高负载下它也应该与RDB一样快。即使在巨大的写入负载的情况下,RDB仍然能够提供关于最大延迟的更多保证。

总结:

相同数据集的数据而言aof文件要远大于rdb文件,恢复速度慢于rdb
aof运行效率要慢于rdb,每秒同步策略效率较好,不同步效率和rdb相同

43 redis持久化之AOF重写机制案例

由于AOF持久化是Redis不断将写命令记录到AOF文件中,随着Redis不断的进行,AOF的文件会越来越大。文件越大,占用服务器内存越大以及AOF恢复要求时间越长。

为了解决这个问题,Redis新增了重写机制,当AOF文件的大小超过所设定的峰值时,Redis就会自动启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集或者可以手动使用命令 bgrewriteaof 来重新。

自动触发

auto- aof- rewrite- percentage 100
auto- aof- rewrite-mil size 64mb

满足配置文件中的选项后,Redis会记录上次重写时的AOF大小,默认配置是当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时才会自动触发

注意,同时满足,且的关系才会触发
1 根据上次重写后的aof大小,判断当前aof大小是不是增长了1倍
2 重写时满足文件大小

为什么需要压缩?

启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集。

举个例子:比如有个key
一开始你 set k1 v1
然后改成 set k1 v2
最后改成 set k1 v3
如果不重写,那么这3条语句都在aof文件中,内容占空间不说启动的时候都要执行一遍,共计3条命令;
但是,我们实际效果只需要set k1 v3这一条,所以,开启重写后,只需要保存set k1 v3就可以了只需要保留最后一次修改值,相当于给aof文件瘦身减肥,性能更好。

AOF重写不仅降低了文件的占用空间,同时更小的AOF也可以更快地被Redis加载。

案例实施

前期配置

开启aof

appendonly yes

重写峰值修改为1k

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 1k

关闭redis和aof混合,设置为no 

aof-use-rdb-preamble no

删除之前的全部aof和rdb,清除干扰项

PS:如果按照视频操作之后,并没有生成aof文件可以尝试如下操作

1.可以连接redis后 检查一下aof是否开启:config get appendonly

2.如果返回no就是开启失败。也可以不修改redis.conf文件。手动设置开启:redis-cli CONFIG SET appendonly yes  【这并不是永久开启aof。仅限于当前进程】

或者是因为重新启动redis.conf文件时还有redis进程在运行,所以开启失败。

1.查找reids运行的进程  ps aux | grep redis  或者 使用 pidof 查找 Redis 主进程 PID  pidof redis-server

2.再kill 返回的PID

3.再redis-server redis.conf 【一般这个时候就会加载成功】

自动触发

完成上述正确配置,重启redis服务器,执行set k1 v1查看aof文件是否正常

查看三大配置文件

几种类型文件的前缀,又追有关序列和类型的附加信息
appendfilename "appendonly.aof"

新版本端加的目录配置项目
appenddirname "appendonlydir"

如有下的aof文件存在
1. 基本文件
appendonly.aof.1.base.rdb
2. 增量文件
appendonly.aof.1.incr.aof
appendonly.aof.2.incr.aof
3. 清单文件
appendonly.aof.manifest

I

k1不停1111111111111111111暴张

重写触发 :超过1k之后,发现文件压缩变小。

手动触发重写

客户端向服务器发送bgrewriteaof命令

总结

AOF文件重写并不是对原文件进行重新整理,而是直接读取服务器现有的键值对,然后用一条命令去代替之前记录这个键值对的多条命令,生成一个新的文件后去替换原来的AOF文件。

AOF文件重写触发机制:通过redis.conf 配置文件中的auto-aof-rewrite-percentage:默认值为100,以及auto-aof-rewrite-min-size:64mb配置,也就是说默认Redis会记录上次重写时的AOF大小,默认配置是当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发。

44 redis持久化之AOF小总结

45 redis持久化之RDB+AOF混合持久化

rdb vs aof

问题

可否共存?AOF 和 RDB 持久化可以同时启用,不会有任何问题。如果在启动时启用了 AOF,Redis 会加载 AOF 文件,因为它提供了更好的数据持久性保障。

数据恢复顺序和加载流程【面试】

在同时开启rdb和aof持久化时,重启时只会加载aof文件不会加载rdb文件

怎么选?用哪个?

RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储
AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.

同时开启两种持久化的方式

在这种情况下,当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整.
RDB的数据不实时,同时使用两者时服务器重启也只会找AOF文件。那要不要只使用AOF呢?
作者建议不要,因为RDB更适合用于备份数据库(AOF在不断变化不好备份),留着rdb作为一种以防万一的手段

RDB+AOF混合持久化方式

结合了RDB和AOF的优点,既能快速加载又能避免丢失过多数据

1 开启混合方式设置
设置aof-use-rdb-preamble的值为yes yes表示开启,设置为no表示禁用
2 RDB+AOF的混合方式 --------- >结论:RDB镜像做全量持久化,AOF做增量持久化
先使用RDB进行快照存储,然后使用AOF持久化记录所有的写操作,当重写策略满足或手动触发重写的时候,将最新的数据存储为新的RDB记录。。这样的话,重启服务的时候会从RDB和AOF两部分恢复数据,既保证了数据完整性,又提高了恢复数据的性能。

简单来说:混合持久化方式产生的文件一部分是RDB格式,一部分是AOF格式。 ---- 》AOF包括了RDB头部+AOF混写

46 redis持久化之纯缓存模式only

在 Redis 的持久化配置中,“纯缓存模式”(persistence-only 模式 / cache-only 模式),通常是指 禁用所有持久化机制(RDB 和 AOF),让 Redis 只作为内存缓存来使用。

纯缓存的作用

作用说明
 更快的性能无磁盘 I/O,适合对延迟极其敏感的应用。
 节省磁盘资源不产生 dump.rdb / appendonly.aof 等文件。
容器化部署与容器生命周期一致,重启就清空数据,适合短生命周期或临时环境。
作为纯粹的缓存使用比如配合数据库使用,仅缓存热点数据,宕机没关系,下次可重新加载。

关闭RDB和AOF

修改redis.conf配置文件

关闭rdb: save "" 禁用rdb。禁用rdb持久化模式下,我们仍然可以使用命令save,bgsave生成rdb文件。

关闭aof:appendonly no禁用aof。禁用aof持久化模式下,我们仍然可以使用命令bgrewriteao生成aof文件。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

004时装购物系统技术解析:构建智能时尚消费平台

时装购物系统技术解析:构建智能时尚消费平台 在电商行业蓬勃发展的当下,时装购物系统凭借其便捷性与多样性,成为消费者选购时尚单品的重要渠道。该系统通过商品信息、订单管理等核心模块,结合前台展示与后台录入功能,…

数据湖 (特点+与数据仓库和数据沼泽的对比讲解)

数据湖就像一个“数据水库”,把企业所有原始数据(结构化的表格、半结构化的日志、非结构化的图片/视频)原样存储,供后续按需分析。 对比传统数据仓库: 数据仓库数据湖数据清洗后的结构化数据(如Excel表格&…

深度剖析Node.js的原理及事件方式

早些年就接触过Node.js,当时对于这个连接前后端框架就感到很特别。尤其是以独特的异步阻塞特性,重塑了了服务器端编程的范式。后来陆陆续续做了不少项目,通过实践对它或多或少增强了不少理解。今天,我试着将从将从原理层剖析其运行…

【AI预测】5月30日尼克斯大战前瞻:东部黑马能否再下一城?

🏀 随着赛季进入白热化阶段,5月30日尼克斯的这场比赛注定焦点十足。作为东部近年来少有的“黑马型”球队,尼克斯用硬朗的防守和团队配合让人重新认识了这支老牌劲旅。 这篇文章,我们将从数据模型球员表现战术执行力三个维度&…

人工智能赋能基础教育个性化学习的理论建构与实践探索

一、引言 1.1 研究背景与意义 随着科技的飞速发展,人工智能(Artificial Intelligence,AI)已逐渐成为推动社会进步的重要力量。在教育领域,人工智能的应用正逐步改变传统的教学模式,为个性化学习提供了新…

历年四川大学计算机保研上机真题

2025四川大学计算机保研上机真题 2024四川大学计算机保研上机真题 2023四川大学计算机保研上机真题 在线测评链接:https://pgcode.cn/school 分数求和 题目描述 有一分数序列: 2 / 1 2/1 2/1, 3 / 2 3/2 3/2, 5 / 3 5/3 5/3, 8 / 5 8/5 8/5, 13 /…

正点原子Z15I ZYNQ 开发板发布!板载PCIe2.0、SPFx2、MIPI CSI等接口,资料丰富!

正点原子Z15I ZYNQ 开发板发布!板载PCIe2.0、SPFx2、MIPI CSI等接口,资料丰富! 正点原子Z15I ZYNQ开发板,核心板全工业级设计,主控芯片的型号是XC7Z015CLG485-2I。开发板由核心板+底板组成,外设…

Ubuntu 22.04 上使用 Docker 安装 RagFlow

GitHub地址:添加链接描述 RAGFlow 是一款开源的检索增强生成(Retrieval-Augmented Generation,简称 RAG)引擎,旨在通过深度文档理解技术,结合大语言模型(LLM),为用户提供高质量、可溯源的问答服务。 🚀 快速入门 RAGFlow 提供了便捷的部署方式,支持 Docker 环境。…

【论文阅读】DanceGRPO: Unleashing GRPO on Visual Generation

DanceGRPO: Unleashing GRPO on Visual Generation 原文摘要 研究背景与问题 生成模型的突破:扩散模型和整流流等生成模型在视觉内容生成领域取得了显著进展。核心挑战:如何让模型的输出更好地符合人类偏好仍是一个关键问题。现有方法的局限性&#xff1…

Milvus可视化客户端Attu安装与使用指南

导读:在向量数据库运维管理中,开发者往往面临着复杂的命令行操作和繁琐的API调用挑战。作为Milvus向量数据库的官方图形化管理工具,Attu为这一痛点提供了优雅的解决方案。 本文深入解析Attu的核心架构和实用功能,重点介绍其在数据…

C# 结合PaddleOCRSharp搭建Http网络服务

Windows打开端口: 控制面板 > 系统和安全 > 防火墙> 高级设置 → 入站规则 → 右侧选择 → 新建规则 → 端口 → 协议类型 TCP→ 端口 using System; using System.Drawing; using System.IO; using System.Net; using System.Text; using System.Threadi…

【论文精读】2024 ECCV--MGLD-VSR现实世界视频超分辨率(RealWorld VSR)

文章目录 一、摘要二、问题三、Method3.1 Latent Diffusion Model3.2 Motion-guided Diffusion Sampling3.3 Temporal-aware Decoder Fine-tuning 四、实验设置4.1 训练阶段4.2 训练数据 贡献总结 论文全称: Motion-Guided Latent Diffusion for Temporally Consis…

初学c语言21(文件操作)

一.为什么使用文件 之前我们写的程序的数据都是存储到内存里面的,当程序结束时,内存回收,数据丢失, 再次运行程序时,就看不到上次程序的数据,如果要程序的数据一直保存得使用文件 二.文件 文件一般可以…

历年厦门大学计算机保研上机真题

2025厦门大学计算机保研上机真题 2024厦门大学计算机保研上机真题 2023厦门大学计算机保研上机真题 在线测评链接:https://pgcode.cn/school 数字变换过程的最大值与步数 题目描述 输入一个数字 n n n,如果 n n n 是偶数就将该偶数除以 2 2 2&…

MySql--定义表存储引擎、字符集和排序规则

示例: CREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci,email VARCHAR(100) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_0900_ai_ci;注意事项: 字符集和排序规则可以按列覆盖表…

深耕数字化赛道,联众优车以创新风控体系构筑汽车金融护城河

近年来,在汽车金融市场规模持续扩大的行业背景下,企业风险管理能力已成为决定市场竞争格局的关键要素。面对快速扩张的市场需求,银保监会2024年发布的《汽车金融公司监管评级办法》明确要求行业强化风控能力建设,央行《金融科技发…

第十九章 正则表达式

第十九章 正则表达式 文本型数据在所有的类UNIX系统(如 Linux)中会扮演着重要角色,在完全领会这些工具的全部特征之前,要先了解一下工具最为复杂的用法和相关技术:正则表达式。 什么是正则表达式 简单地说,正则表达式是一种用于…

内存监控方法与要点详解

引言 在软件性能测试领域,内存管理是评估系统稳定性和性能的关键指标之一。作为软件测试工程师,我们经常遇到因内存泄漏、内存溢出等问题导致的系统崩溃或性能下降。本文将深入探讨性能测试中内存监控的方法和要点,帮助测试团队更有效地识别…

56、Ocelot 概述

Ocelot 是一个基于 .NET Core 开发的开源 API 网关,主要用于微服务架构中,为多个后端服务提供统一的访问入口。它通过集中化管理请求路由、认证、限流、负载均衡等功能,简化了客户端与后端服务之间的交互,同时增强了系统的安全性和…

如何将多张图组合到一张图里同时保留高的分辨率(用PPT+AdobeAcrobat)

文章目录 一、用PPT排版得到一页排布了很多图片的PPT二、用AdobeAcrobat打开pdf文件三、最后得到的图片 一、用PPT排版得到一页排布了很多图片的PPT 步骤如下 ①将幻灯片大小的长设置为17.2,宽根据图像多少进行调整,我这里是10 幻灯片大小的长设置步骤&…