【Redis】AOF日志

news2025/5/25 12:35:52

目录

  • 1、背景
  • 2、工作原理
  • 3、核心配置参数
  • 4、优缺点
  • 5、AOF文件内容

1、背景

AOF(Append Only File)是redis提供的持久化机制之一,它通过记录所有修改数据库状态的写命令来实现数据库持久化。与RDB(快照)方式不同,AOF记录的是操作过程而非数据状态。

2、工作原理

AOF的工作原理如下:

1、命令记录:当AOF开启时,redis会将每个写命令追加到AOF缓冲区
2、文件同步:根据配置策略将缓冲去内容写入AOF文件
3、文件重写:定期执行AOF重写以压缩文件大小

3、核心配置参数

AOF在redis.conf的相关配置如下:

[root@xxx]# cat /xxx/redis.conf | grep -E 'append|auto-aof'
appendonly yes #启用AOF持久化
appendfilename "xxx" #AOF文件名,没配置默认文件名为appendonly.aof
appendfsync everysec #同步策略
no-appendfsync-on-rewrite yes #控制AOF重写期间是否执行主进程的fsync同步操作
auto-aof-rewrite-percentage 300 #触发重写的增长比例
auto-aof-rewrite-min-size 1G #触发重写的最小文件大小

同步策略(appendfsync )有三种:

1、always:每个写命令都同步到磁盘,最安全但性能最低
2、everysec(默认):每秒同步一次,平衡安全性和性能
3、no:由操作系统决定同步时机,性能最好但是可能丢失数据

需要注意no-appendfsync-on-rewrite这个配置的作用机制:

<1>当设置为yes时

1、在AOF重写期间,主进程不会调用fsync来同步AOF文件
2、即使配置了appendfsync 也会被暂时忽略
3、可以显著提供重写期间的性能,减少I/O阻塞

<2>当设置为no时

1、在AOF重写期间,主进程仍会按照配置的appendfsync策略同步AOF文件
2、保证更高的数据安全性,但可能会影响重写性能

4、优缺点

AOF的优缺点如下:

优点缺点
数据安全性高:可配置不同级别的同步策略(always/everysec/no)文件体积大:记录所有写命令,长期运行后文件可能远大于RDB
可读性强:AOF文件是纯文本格式,便于人工检查或修复恢复速度慢:重启时需要重新执行所有命令,比RDB加载慢
容错性好:即使文件部分损坏,仍可通过redis-check-aof工具修复写入性能开销:相比RDB,AOF通常有更高的写入负载(取决于同步策略)
实时性高:默认每秒同步,最多丢失1秒数据重写期间可能阻塞:AOF重写时(尤其是大实例)可能短暂影响性能
操作粒度细:记录每个写命令,可精确到命令级别恢复历史兼容性问题:不同redis版本的AOF格式可能有细微差异
支持混合持久化(redis 4.0+):结合RDB和AOF优势配置复杂度高:需合理设置同步策略,重写触发条件等参数

5、AOF文件内容

客户端连接redis执行如下命令:

[root@xxx]# /xxx/redis-cli -h 127.0.0.1 -p 6379 -a xxx
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:16379> select 2 #使用2号库
OK
127.0.0.1:16379[2]> set XXX YYY #设置key=XXX,value=YYY
OK

AOF文件输出如下:

[root@xxx]# tail -f /xxx/appendonly.aof
*2 #表示这部分操作有2个部分
$6 #表示SELECT命令有6个字节
SELECT
$1 #表示使用的2号数据库这个2有1个字节
2
*3 #表示这部分操作有3个部分
$3 #表示set命令有3个字节
set
$3 #表示设置的键XXX有3个字节
XXX
$3
YYY #表示设置的值YYY有3个字节

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

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

相关文章

Leetcode 2792. 计算足够大的节点数

1.题目基本信息 1.1.题目描述 给定一棵二叉树的根节点 root 和一个整数 k 。如果一个节点满足以下条件&#xff0c;则称其为 足够大 &#xff1a; 它的子树中 至少 有 k 个节点。 它的值 大于 其子树中 至少 k 个节点的值。返回足够大的节点数。 如果 u v 或者 v 是 u 的…

使用ps为图片添加水印

打开图片 找到文字工具 输入想要添加的水印 使用移动工具移动到合适的位置 选中文字图层 设置不透明度 快捷键ctrlt可以旋转 另存为png格式图片

x64_ubuntu22.04.5安装:cuda driver + cuda toolkit

引言 本文操作均已实践验证&#xff0c;安装流程来自nvidia官方文档&#xff0c;验证平台显卡&#xff1a;RTX4070。 验证日期&#xff1a;2025.5.24. 1.安装cuda driver 1.1.安装方式有2种&#xff0c;这里选择方式1&#xff1a; 从apt安装最省事&#x1f496;&#xff0c…

开盘啦 APP 抓包 逆向分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 抓包 这是一个记录贴。 这个APP是数…

vs2022 Qt Visual Studio Tools插件设置

安装之后&#xff0c;需要指定QT中msvc编译器的位置&#xff0c;点击下图Location右边的按钮即可 选择msvc2022_64\bin目录下的 qmake.exe 另一个问题,双击UI文件不能打开设计界面 设置打开方式 选择msvc2022_64\bin目录下的designer.exe 确定即可 然后设置为默认值即可 确定…

Python包__init__.py标识文件解析

在 Python 中&#xff0c;__init__.py 文件是包&#xff08;Package&#xff09;的核心标识文件&#xff0c;它的存在使一个目录被 Python 解释器识别为「包」。这个文件有以下核心作用&#xff1a; 核心作用 标识包的存在 任何包含 __init__.py 的目录都会被 Python 视为一个包…

电商ERP管理系统,Java+Vue,含源码与文档,统筹订单、库存等,助力电商企业高效运营

前言&#xff1a; 在当今数字化飞速发展的电商时代&#xff0c;电商企业面临着日益激烈的市场竞争和复杂的业务运营环境。为了提升运营效率、降低成本、优化客户体验&#xff0c;一套高效、全面的电商ERP管理系统显得尤为重要。电商ERP管理系统整合了企业内部的各项业务流程&a…

Spring Boot微服务架构(四):微服务的划分原则

微服务划分原则&#xff08;CRM系统案例说明&#xff09; 一、微服务划分的核心原则 单一职责原则&#xff08;SRP&#xff09; 每个微服务只负责一个明确的业务功能服务边界清晰&#xff0c;避免功能混杂便于独立开发、测试和部署 业务领域驱动设计&#xff08;DDD&#xff0…

【打卡】树状数组的操作

#define MAXN 1000 int n; // 数组实际长度 int array[MAXN]; // 原始数组&#xff08;下标从0开始&#xff09; int tree[MAXN]; // 树状数组&#xff08;下标从1开始&#xff09; int p[MAXN]; // 前缀和数组&#xff08;下标从1…

HTTP协议初认识、速了解

目录 1. 什么是HTTP协议 2. HTTP协议特点 3. HTTP协议发展和版本 3.1. HTTP1.0 3.2. HTTP1.1 3.3. HTTP2.0 3.4. http1.1和http2.0区别 4. HTTP协议中URI、URL、URN 4.1. URI 4.2. URL 4.3. URN 5. HTTP协议的请求 5.1. HTTP协议中的请求信息 5. 总结 前言 本文讲…

模拟电子技术基础----绪论

一、电子技术的发展 1.电子技术的发展&#xff0c;推动计算机技术的发展&#xff0c;使之“无孔不入”&#xff0c;应用广泛&#xff01; •广播通信&#xff1a;发射机、接收机、扩音、录音、程控交换机、电话、手机 •网络&#xff1a;路由器、ATM交换机、收发器、调制解调…

iOS 使用 - 设置 来电震动/关闭震动

来电震动是一个很直观的老功能。但到了iOS 18&#xff0c;苹果却把震动功能的开关藏得越来越深&#xff0c;甚至分散在不同的菜单里&#xff0c;让用户难以找到。这里记录分享设置方法&#xff1a; 1. 震动开关的路径 设置 → 通用 → 辅助功能 → 触控 → 震动 2. 来电震动…

[C语言初阶]扫雷小游戏

目录 一、原理及问题分析二、代码实现2.1 分文件结构设计2.2 棋盘初始化与打印2.3 布置雷与排查雷2.4 游戏主流程实现 三、后期优化方向 在上一篇文章中&#xff0c;我们实现了我们的第二个游戏——三子棋小游戏。这次我们继续结合我们之前所学的所有内容&#xff0c;制作出我们…

谷歌medgemma-27b-text-it医疗大模型论文速读:多语言大型语言模型医学问答基准测试MedExpQA

《MedExpQA: 多语言大型语言模型医学问答基准测试》论文解析 一、引言 论文开篇指出大型语言模型&#xff08;LLMs&#xff09;在医学领域的巨大潜力&#xff0c;尤其是在医学问答&#xff08;QA&#xff09;方面。尽管LLMs在医学执照考试等场景中取得了令人瞩目的成绩&#…

DeepSeek+白果AI论文:开启答辩PPT生成的「智能双引擎」时代

2025学术答辩革新&#xff1a;DeepSeek与白果AI论文的黄金协同方案 白果Ai论文&#xff0c;论文写作神器~ https://www.baiguoai.com/ 在学术答辩的「战场」上&#xff0c;「选题创新不足」「数据可视化低效」「PPT逻辑断裂」等痛点长期困扰研究者。DeepSeek与白果AI论文的深…

SDC命令详解:使用set_logic_dc命令进行约束

相关阅读 SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm1001.2014.3001.5482 set_logic_dc命令可以将当前设计中的输入端口为不关心&#xff08;设置端口的driven_by_dont_care属性为true&#xff09;&#xff0c;该端口在综合是可以被认为是…

小程序涉及提供提供文本深度合成技术,请补充选择:深度合成-AI问答类目

一、问题描述 最近新项目AI咨询小程序审核上线&#xff0c;按照之前小程序的流程&#xff0c;之前审核&#xff0c;提示审核不通过&#xff0c;审核不通过的原因&#xff1a;小程序涉及提供提供文本深度合成技术 (如: AI问答) 等相关服务&#xff0c;请补充选择&#xff1a;深…

基于亚博K210开发板——lvgl 图形化实验

开发板 亚博K210开发板 实验目的 本次测试主要学习 K210 图形化操作界面的功能。 实验元件 LCD 显示屏、FT6236 触摸板 lvgl 图形化库简介 LVGL&#xff08;轻度综合图形界面库&#xff09;是一个免费开源图形库&#xff0c;具有使用方便&#xff0c;画面美观&#xff…

LABVIEW 通过节点属性动态改变数值显示控件的方法

在 LabVIEW 里&#xff0c;能够借助属性节点来改变数值输入控件的禁用状态。下面为你介绍具体的操作步骤&#xff1a; 1. 创建或开启前面板 要先创建一个数值输入控件&#xff0c;操作方法是&#xff1a;点击 "控件" 选板&#xff0c;接着选择 "新式→数值→数…

信息安全管理与评估2025上海卷

上海市“星光计划”第十一届职业院校技能大赛 &#xff08;高职组&#xff09; “信息安全管理与评估”赛项 任务书 一、 赛项时间共计4小时。二、 赛项信息 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段 平台搭建与安全设备 配置防护 任务1 网络平台搭建 2…