• Home
  • About
    • Xrlin photo

      Xrlin

      A blog for sharing my thoughts and knowledge

    • Learn More
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

Redis数据的持久化

16 Dec 2017

Reading time ~1 minute

Redis提供了两种方式进行数据库的持久化:

  • RDB:RDB是redis默认的数据持久化配置,在配置的某个时间点下保存内存中数据的快照到rdb文件中(默认dump.rdb)。
  • AOF(Append only file):Redis在每次尽心数据写入操作时会更新AOF文件(默认appendonly.aof), AOF文件中会以文本方式记录redis的数据操作。

RDB与AOF的优缺点:

RDB优点:

  1. RDB是很紧凑的文件,通过该文件保留redis数据某个时间点的快照,对于需要进行某个时间点数据备份以进行灾难恢复的功能,这是一个很好的方案。

  2. 文件较小,方便数据传输。

  3. 相比aof文件在redis重启时通过rdb文件加载更快。

RDB缺点:

  1. RDB文件仅是一个时间点下的快照,不能最大限度保证数据的安全性。

  2. RDB文件写入需要fork出一个子进程,在处理大量数据时会耗时较长、占用系统资源较多; AOF方式也需要fork出子进程,但AOF方式可以调节写入频率, 而且不会影响到数据的持久性。

  3. rdb文件在不同版本间更容易出现兼容性问题,可能导致redis服务启动失败。

AOF优点:

  1. 更可靠,可以设置fsync不进行文件写入、每秒同步、每次查询同步,通常配置fsync为每秒同步就可以提供很好的保障。

  2. AOF是append only的,不会导致文件损坏,遇到断电等情况,可以通过redis-check-aof工具进行修复。

  3. 在aof文件过大时,可以通过BGREWRITEAOF命令优化aof文件。

  4. aof更好维护、可读性强。

AOF缺点:

  1. 与rdb文件相比,aof文件通常大得多。

  2. 在某些fsync策略下,aof比rdb方式写入更慢,但在fsync配置为erversec的情况下,性能已经足够好。

  3. aof在使用某些查询指令是存在罕见的bug,但通常都不会遇到。

通常推荐同时使用aof和rdb两种持久化策略,可以提供堪比postgresql的数据可靠性,同时依靠rdb文件可以便于数据备份, 使用rdb文件也可以在重启时更快载入数据。



Redis 数据库 Like Tweet +1