radis 持久化之 AOF

本文深入探讨Redis的AOF(Append Only File)持久化机制,包括其工作原理、写入时机、落盘策略及AOF重写机制等内容。通过理解这些关键特性,读者能够更好地掌握如何管理和优化Redis数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

radis 持久化之 AOF

2种方式

  • AOF (append only file) 指令日志

  • RDB 数据快照

AOF

写入时机

AOF 的写入是先执行指令,再记录日志

  • 区别于 WAL : write ahead log:先记录日志,再执行写操作

    • 因为 redis 没有单独的逻辑验证命令是否合法,先执行再记录日志,可以保证非法的命令不会被记录

    • 而对于关系型数据库,比如 mysql ,在 server层 会有专门的分析器进行词法分析和语法分析

落盘时机

可配置项 appendfsync

  • Always 每个写命令执行后,立即将日志写入磁盘

  • Everysec 每秒写入磁盘

  • No 由操作系统决定何时将日志写入磁盘

AOF重写机制

为什么需要重写日志?

因为AOF文件过大,会存在以下问题:

  • 文件系统无法支持大尺寸的文件

  • 对大文件的写入操作效率低

  • 当需要重放AOF时,过大的AOF文件会使恢复消耗更多的时间

为什么可以重写

因为操作记录存在冗余

  • 在一段时间内,可能对一个key执行多次写操作,可以进行合并

  • 在某个时间点后,某个key可能会过期,对于这个key之前的操作,可以丢弃

怎么重写

主进程 fork 一个子进程 bgrewriteaof,bgrewriteaof 进程得到主进程的内存拷贝

主线程继续处理到来的操作,并将写操作记录到旧的AOF

bgrewriteaof 新建一个 AOF,在后台执行重写任务,利用内存中数据的最新状态,直接生成相应的最新指令

重写完成之后,主进程才会切换到新的AOF, 保证不会丢失新的写操作。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值