Redis面试题

题目

讲一讲 redis 的持久化机制,并讲讲他们的劣势和优势

答案

概述

Redis 提供了两种持久化机制 RDB 和 AOF 机制。

RDB

定义

redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,将内存中的数据以二进制序列化形式写入到磁盘中,数据写入到 dump.rdb 文件中。redis 重启会从 dump.rdb 文件中恢复数据。

优势

  1. 只有一个 rdb 文件,方便持久化。
  2. 容灾性比较好,一个文件可以保存的安全的磁盘上面。
  3. 性能比较好,会 fork 一个子进程,使用一个单独的进程来记录数据,将 redis 操作数据和录入磁盘操作分开。保证了 redis 的高性能。
  4. 当数据量比较大的时候,和 aof 相比,启动更加快速。

劣势

  1. RDB 是隔一段时间同步一部分数据,这会导致一部分数据丢失。

AOF

定义

与 RDB 追加数据不同,AOF 更像是一个日志记录文件,将每次操作指令记录到文件里面。它只记录对内存的修改操作指令。

优势

  1. 数据安全,通过配置 appendfsync 属性,可以保证每次操作都会被记录,虽然在生产环境中不会用。
  2. AOF 有 rewrite 机制,可以对保存的数据进行瘦身。

劣势

  1. AOF 是记录的每个写操作的指令,文件比较大,如果重启恢复时间比较长。