File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -39,7 +39,7 @@ redis 如果仅仅只是将数据缓存在内存里面,如果 redis 宕机了
3939- AOF 可以更好的保护数据不丢失,一般 AOF 会每隔 1 秒,通过一个后台线程执行一次` fsync ` 操作,最多丢失 1 秒钟的数据。
4040- AOF 日志文件以 ` append-only ` 模式写入,所以没有任何磁盘寻址的开销,写入性能非常高,而且文件不容易破损,即使文件尾部破损,也很容易修复。
4141- AOF 日志文件即使过大的时候,出现后台重写操作,也不会影响客户端的读写。因为在 ` rewrite ` log 的时候,会对其中的指令进行压缩,创建出一份需要恢复数据的最小日志出来。在创建新日志文件的时候,老的日志文件还是照常写入。当新的 merge 后的日志文件 ready 的时候,再交换新老日志文件即可。
42- - AOF 日志文件的命令通过非常可读的方式进行记录 ,这个特性非常** 适合做灾难性的误删除的紧急恢复** 。比如某人不小心用 ` flushall ` 命令清空了所有数据,只要这个时候后台 ` rewrite ` 还没有发生,那么就可以立即拷贝 AOF 文件,将最后一条 ` flushall ` 命令给删了,然后再将该 ` AOF ` 文件放回去,就可以通过恢复机制,自动恢复所有数据。
42+ - AOF 日志文件的命令通过可读较强的方式进行记录 ,这个特性非常** 适合做灾难性的误删除的紧急恢复** 。比如某人不小心用 ` flushall ` 命令清空了所有数据,只要这个时候后台 ` rewrite ` 还没有发生,那么就可以立即拷贝 AOF 文件,将最后一条 ` flushall ` 命令给删了,然后再将该 ` AOF ` 文件放回去,就可以通过恢复机制,自动恢复所有数据。
4343- 对于同一份数据来说,AOF 日志文件通常比 RDB 数据快照文件更大。
4444- AOF 开启后,支持的写 QPS 会比 RDB 支持的写 QPS 低,因为 AOF 一般会配置成每秒 ` fsync ` 一次日志文件,当然,每秒一次 ` fsync ` ,性能也还是很高的。(如果实时写入,那么 QPS 会大降,redis 性能会大大降低)
4545- 以前 AOF 发生过 bug,就是通过 AOF 记录的日志,进行数据恢复的时候,没有恢复一模一样的数据出来。所以说,类似 AOF 这种较为复杂的基于命令日志 / merge / 回放的方式,比基于 RDB 每次持久化一份完整的数据快照文件的方式,更加脆弱一些,容易有 bug。不过 AOF 就是为了避免 rewrite 过程导致的 bug,因此每次 rewrite 并不是基于旧的指令日志进行 merge 的,而是** 基于当时内存中的数据进行指令的重新构建** ,这样健壮性会好很多。
You can’t perform that action at this time.
0 commit comments