Redis持久化AOF


Redis持久化AOF

介绍

与RDB存储某个时刻的快照不同,AOF持久化方式会记录客户端对服务器的每一次写操作命令,并将这些写操作以Redis协议追加保存到以aof为后缀的文件,在Redis服务器重启时,会加载并运行aof文件的命令,以达到恢复数据的目的。

原理

开启方式

Redis默认不开启AOF持久化方式,需要在配置文件中开启并进行更详细的配置。

# 开启aof机制
appendonly yes

# aof文件名
appendfilename "appendonly.aof"

# 写入策略,always表示每个写操作都保存到aof文件中,也可以是everysec或no
appendfsync always

# 默认不重写aof文件
no-appendfsync-on-rewrite no

# 保存目录
dir ~/redis/

重要配置项说明

appendfsync 写入策略

我们可以通过appendfsync选项来指定写入策略,有以下三个选项。

  • always
    客户端的每一个写操作都保存到aof文件中,这种策略很安全,但是每个写操作都有io,所以比较慢。
  • everysec
    appendfsync 的默认写入策略,每秒写入一次aof文件,因此最多可能丢失1s的数据。
  • no
    Redis服务器不负责写入aof,而是交由操作系统来处理什么时候写入aof文件。更快,但也是最不安全的选择,不推荐使用。

no-appendfsync-on-rewrite aof文件重写

AOF将客户端的每一个写操作都追加到aof文件末尾,比如对一个key多次执行incr命令,这时候aof保存每一次命令到aof中,文件将会变得非常大。

aof文件大,那么加载aof文件恢复数据时就会非常慢。为了解决这个问题,Redis支持aof文件重写,通过重写aof,可以生成一个恢复当前数据的最少命令集。

aof文件损坏

在写入aof日志文件时,如果Redis服务器宕机,则aof文件会出现格式错误,在重启Redis时,Redis服务器会拒绝载入这个aof文件,可以通过一下步骤修复aof文件

  1. 备份现在的aof文件
  2. 使用redis-check-aof命令修复aof文件
    $ redis-check-aof -fix file.aof

优缺点

优点

  • AOF只是追加日志文件,所以对服务器性能影响较小,速度比RDB要快,消耗的内存也小。

    缺点

  • AOF生成的日志文件太大,即时通过重写,体积仍然很大。
  • 恢复数据的速度比RDB慢。

文章作者: 我若为侠
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 我若为侠 !
 本篇
Redis持久化AOF Redis持久化AOF
Redis持久化AOF介绍与RDB存储某个时刻的快照不同,AOF持久化方式会记录客户端对服务器的每一次写操作命令,并将这些写操作以Redis协议追加保存到以aof为后缀的文件,在Redis服务器重启时,会加载并运行aof文件的命令,以达到恢
下一篇 
Redis持久化RDB Redis持久化RDB
Redis持久化RDB背景Redis作为一个键值对内存数据库(NoSQL),数据都存储在内存中,在处理客户端请求时,所有操作都在内存当中进行。 但是存储在内存中的数据,只要服务器关机(各种原因引起的),内存中的数据就会消失了,不仅服务器关机
  目录