【Redis】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个字节
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值