Redis面试题
题目
讲一讲 redis 的持久化机制,并讲讲他们的劣势和优势
答案
概述
Redis 提供了两种持久化机制 RDB 和 AOF 机制。
RDB
定义
redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,将内存中的数据以二进制序列化形式写入到磁盘中,数据写入到 dump.rdb 文件中。redis 重启会从 dump.rdb 文件中恢复数据。
优势
- 只有一个 rdb 文件,方便持久化。
- 容灾性比较好,一个文件可以保存的安全的磁盘上面。
- 性能比较好,会 fork 一个子进程,使用一个单独的进程来记录数据,将 redis 操作数据和录入磁盘操作分开。保证了 redis 的高性能。
- 当数据量比较大的时候,和 aof 相比,启动更加快速。
劣势
- RDB 是隔一段时间同步一部分数据,这会导致一部分数据丢失。
AOF
定义
与 RDB 追加数据不同,AOF 更像是一个日志记录文件,将每次操作指令记录到文件里面。它只记录对内存的修改操作指令。
优势
- 数据安全,通过配置 appendfsync 属性,可以保证每次操作都会被记录,虽然在生产环境中不会用。
- AOF 有 rewrite 机制,可以对保存的数据进行瘦身。
劣势
- AOF 是记录的每个写操作的指令,文件比较大,如果重启恢复时间比较长。