1.AOF持久化配置

AOF持久化,默认是关闭的,默认打开的持久化配置是RDB

在redis.config配置appendonly yes ,可以打开AOF持久化

在生产环境中,一般来说AOF是要打开的,除非对一两分钟

没有影响。

        打开AOF机制之后,redis没收到一次写命令,就会写入到

日志文件中,当然现写入到OS cache 中,然后每隔一定的时间

在fsync一下,把命令写入到磁盘 中。

       如果AOF和RDB都开启了,redis 重启的时候,会优先通过

AOF进行数据恢复的,因为AOF数据比较完整。

 

     AOF有三种fsync策略:

always:每次写入一条数据,立即将这个数据fsync写到磁盘上去(性能很差)

everysec:每秒将os cache内存中的数据fsync到磁盘(生产环境使用这个策略,QPS能达到上万)

no : 仅仅将数据写入到os cache就撒手不管了,os 会根据自己的策略把数据写入到磁盘,不可控

 

AOF的rewrite,redis中的数据是有限的,很多数据会自动过期,也可能会被用户删掉,可能会被redis用缓存清楚的算法清楚掉。

AOF会自动每隔一定的时间,做rewrite操作。

rewrite过程:


(1)redis fork一个子进程
(2)子进程基于当前内存中的数据,构建日志,开始往一个新的临时的AOF文件中写入日志
(3)redis主进程,接收到client新的写操作之后,在内存中写入日志,同时新的日志也继续写入旧的AOF文件
(4)子进程写完新的日志文件之后,redis主进程将内存中的新日志再次追加到新的AOF文件中
(5)用新的日志文件替换掉旧的日志文件

 

10-05 12:45