redis持久化_AOF

通过上面两篇文章,我们知道了redis进行持久化方案中,redis提供了两种方式,RDB方式是通过对redis内存中的数据进行快照备份的,由于rdb持久化方案有一个明显的劣势,那就是无法保证数据的一致性,因此官方提供了另外一种持久化方式进行补充,那就是AOF持久化方式。

AOF:Append-only file,通过字面意思它是一个追加(append)文件,指的是它采用日志的形式记录着redis每个插入更新操作,并追加到文件末尾中。因此这个日志文件保存了所有redis的变更和插入操作,通过日志文件即可完成redis数据库的恢复。正是由于AOF采用日志记录数据,所以它可以完美弥补RDB的缺点。

但是AOF采用日志记录操作,所以AOF文件一般要比rdb快照文件要大很多,而且进行恢复的时间也会比rdb慢些。


开启AOF持久化步骤

1、redis 默认是不开启AOF的,想要打开,需要在redis.conf文件中找到APPEND ONLY MODE配置模块,通过修改相应的参数进行打开AOF持久化,和对AOF做一些其它配置。如下图:

redis持久化_AOF

2、通过上图可以发现,redis AOF的默认配置参数中,AOF持久化是关闭的,需要把它修改为:appendonly yes,才能打开。

appendonly yes

3、指定保存AOF日志的文件名,默认是 appendonly.aof。

appendfilename "appendonly.aof"

4、指定触发日志的更新条件(更新机制),默认配置如下:

# appendfsync always
appendfsync everysec
# appendfsync no

解释说明

always:指的是 同步持久化,每次发送数据的变更或者插入,就会追加写入到日志文件中。这种方式是比较频繁的,虽然是安全系数最高的,但是耗时也是最久的。

everysec:指的是 异步持久化,即每秒异步执行一下变更操作日志的追加插入。这个是官方推荐的方式。

no:不同步。

5、配置重写机制触发机制。

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

解释说明:通过AOF持久化的机制我们可以明显发现,那就是随着redis持续使用,aof日志文件肯定会越来越大。所以redis官方提供了重写机制来讲解这个问题。当日志文件超过配置文件中设定的阀值时,redis就会fork出一个子进程读取内存中的数据,重新写入到一个临时的日志文件当中,然后替换掉旧的AOF文件。