AOF(Append Of File)持久化:通过保存Redis服务器所执行的写命令来记录数据库状态。
AOF持久化功能的实现分为:命令追加(append)、文件写入、文件同步(sync)三步。
命令追加:写命令会被追加到aof_buf缓冲区的末尾。
AOF文件的写入与同步:
appendfsync选项的设置对安全性和性能有很大影响非常重要。
appendfsync的值为always时,写入并同步,效率最慢,最安全。
appendfsync设置为everysec时,写入并同步,效率够快,就算故障停机,也只丢失一秒的命令数据。
appendfsync为no时,只将aof_buf缓冲区内容写入到AOF文件,不执行同步。
AOF文件的载入与数据还原:
Redis服务器只要读入并重新执行一遍AOF文件保存的写命令,就可以还原关闭之前的数据库状态。
AOF重写(rewrite):
AOF文件的内容越来越多,文件体积越来越大,Redis提供AOF文件重写功能。
AOF重写的原理:首先从数据库中读取键现在的值,然后用一条命令去记录键值对,代替之前记录这个键值对的多条命令。
AOF后台重写(BGREWRITEAOF命令)
为了避免线程长时间阻塞,Redis将AOF重写放到子进程里执行。
为了使得服务器当前数据库状态和重写后的AOF文件所保存的数据库状态一致,会在AOF重写期间,将写命令追加到AOF缓冲区和AOF重写缓冲区。
原文:https://www.cnblogs.com/expiator/p/10428655.html