那么AOF模式为什么可以完整的记录整个数据库呢?
原理:在AOF模式下,Redis会把执行过的每一条更新命令记录下来,保存到AOF文件中;当Redis需要恢复数据库数据时,只需要从之前保存的AOF文件中依次读取命令,执行即可,如果aof和rdb同时存在,redis优先使用aof。
aof配置文件:
appendonly yes 是否打开aof日志功能
appendfsync always 每一个命令都立刻同步到aof,安全但是速度慢
appendfsync everysec 折衷方案每秒一次,一般选用这种。
appendfsync no 交给操作系统,由操作系统判断缓冲区大小,同意写入aof中,频率低速度快。
no-appendfsync-on-rewrite yes 正在导出rdb文件,是否要停止aof
auto-aof-rewrite-percentage 100 aof文件比起上次重写时的大小,增长率是百分之百时重写。
auto-aof-rewrite-min-size 64mb 至少超过64m重写。
配置如上以后,启动redis,会发现在当前目录下面会多出一个aof文件
设置键值对
然后查看aof文件内容,会发现多次同时设置一个键值对,每次都会在aof文件中有记录
但是上述会发现一个问题,如果多次操作同一个键值对,每次都会记录实在aof文件中,导致aof文件过大,其实只需要记录最后一次操作记录在aof
文件即可.这会用到aof重写,导致重写的aof里面操作命令减少。
bgrewriteaof