rdb:save(阻塞),bgsave(新进程)
默认rdb,aof需手动开启(appendonly yes),手动save或bgsave或save选项触发bgsave
save选项
save 900 1
save 300 10
900秒1次修改或300秒10次修改 自动bgsave
save实现:每隔100毫秒检查一次,dirty上次save/bgsave修改后次数,lastsave上次save/bgsave时间
rdb 文件结构:
aof 记录写命令,分为命令追加(写到aof_buf缓冲区),文件写入(调用write,数据可能留在操作系统缓冲区内),文件同步(写入了磁盘)
每次事件循环结束,都要aof写入
appendfsync: always(每次事件循环同步)
everysec(每秒同步,默认)
no(操作系统决定何时同步)
aof还原数据:利用伪客户端依次读取执行命令
aof rewrite:减小aof文件大小,实现:生成子进程,直接读取数据库内容,生成命令写入新aof文件,过程中的新命令写入aof重写缓冲区,最后追加。