Redis持久化之AOF
目录
一、简介:
二、开启AOF
三、AOF的配置参数
四、AOF文件的修复
五、优缺点
一、简介:
AOF(Append Only File)是redis的另一种持久化机制,这种持久化机制与RDB一样,也是redis的主进程fork一个子进程后,对操作进行记录,其原理用一句话概括就是:它以日志的形式,记录我们对redis数据库进行写操作的命令,然后在进行恢复的时候,再将这些命令按照顺秀一次执行,重新构建redis的数据结构。
二、开启AOF
和RDB一样,AOF的开启也是在redis.conf配置文件中配置即可,默认AOF是关闭的。
这个时候要是想开启AOF进行持久化,则直接进行如下配置就行
appendonly yes
三、AOF的配置参数
appendfsync everysec
AOF的同步机制的频率也是可以手动配置的,默认是每1秒同步一次,也就是说,即使断电了,也最多丢失1秒的数据
appendfsync no:写入aof文件,不等待磁盘同步。
如上参数设置:如果应用系统无法忍受延迟,而可以容忍少量的数据丢失,则设置为yes。如果应用系统无法忍受数据丢失,则设置为no。所以,设置为no的话,是数据安全的,这也是redis的默认设置。
auto-aof-rewrite-percentage
aof文件增长比例,指当前aof文件比上次重写的增长比例大小。aof重写即在aof文件在一定大小之后,重新将整个内存写到aof文件当中,以反映最新的状态(相当于bgsave)。这样就避免了,aof文件过大而实际内存数据小的问题(频繁修改数据问题).
auto-aof-rewrite-min-size
aof文件重写最小的文件大小,即最开始aof文件必须要达到这个文件时才触发,后面的每次重写就不会根据这个变量了(根据上一次重写完成之后的大小).此变量仅初始化启动redis有效.如果是redis恢复时,则lastSize等于初始aof文件大小.
aof-load-truncated
指redis在恢复时,会忽略最后一条可能存在问题的指令。默认值yes。即在aof写入时,可能存在指令写错的问题(突然断电,写了一半),这种情况下,yes会log并继续,而no会直接恢复失败.
四、AOF文件的修复
因为生成的appendonly.aof文件就是个命令日志文件,那么当这个文件中出现错误或者不可执行时,那么久没法用它开修复,而redis提供了修复AOF文件的工具 redis-check-aof.exe
这个时候只要执行如下命令:
redis-check-aof.exe --fix appendonly.aof
五、优缺点
优点:
每一次修改都同步,文件的完整性更加好;
每秒同步一次,可能会丢失1秒的数据;
从不同步,效率更高;
缺点:
相对于数据文件来说,aof文件远远大于rdb,修复的速度也比rdb慢
AOF的运行效率要比RDB慢,因此redis默认采用RDB.
这里再看看一下网上的性能建议:
还没有评论,来说两句吧...