简介

默认情况下,redis 异步存储rdb,这个模式已经可以在大部分应用场景已经够好了。但是Redis进程有问题或者断电,可能会导致几分钟的写操作的数据丢失(取决于配置的保存点)。

AOF

AOF(Append Only File) 是另一种持久化模式,默认的数据fsync策略,Redis在服务器断电之类的重大事件中可能会丢失一秒钟的写入,或者在Redis进程本身出现问题时丢失一次写入,但操作系统仍在正常运行。

AOF 和 RDB 两种持久化方式可以同时使用。在启动时候是使用AOF文件加载数据的。

开启AOF

appendonly yes

配置AOF文件名

appendfilename "appendonly_6379.aof"

如果有多个实例要修改成不同的文件名。

写数据频率

fsync会告诉操作系统真正地写入磁盘,而不是写在缓存里面,等待足够的数据再写入磁盘。

Redis支持三种模式: 1、不适用fsync模式,仅仅使用操作系统的写数据策略;(no)

2、总是启动用fsync;(always) 3、每秒同步一次。(everyse)

默认是everysec

appendfsync everysec

避免BGSAVE和BGREWRITEAOF跟fsync同时进行

在rewrite的时候不进行fsync,避免响应过慢。为了避免丢数据建议设置成no。

no-appendfsync-on-rewrite no

自动rewrite AOF

AOF文件如果不执行rewrite,文件会不断的增长。可以设置达到一定量就开始执行rewrite,避免磁盘耗尽。

auto-aof-rewrite-percentage 100

超过最后一次rewrite文件大小的百分比,如果设置为0表示不自动aof。

auto-aof-rewrite-min-size 64mb

如果数据量比较小,设置百分比就会一直执行rewrite,消耗信息,这时候就可以设置最小rewrite的大小。

加载AOF异常文件

aof-load-truncated yes

如果redis异常推出,会导致aof不完整,如果设置为yes,启动时就会加载aof异常文件,如果设置为no,就不会加载,启动失败。

使用rdb文件配合aof使用

在redis 5的时候,启动的时候使用rdb文件会加载数据比较快,再执行aof操作,可以减少数据加载时间。

aof-use-rdb-preamble yes