Redis面试(1):Redis的持久化方式有哪些?各有何利弊?

Redis提供的持久化策略包括:RDB持久化,AOF持久化,RDB—AOF混合持久化。

1.RDB持久化方式

优点:

  • 默认的持久化方式,持久化文件后缀为.rdb(Redis DataBase),以二进制的形式存储每个数据库的键值对
  • 默认的save选项:save 60 10000;save 300 100;save 3600 1。表示60s内服务器至少对数据库进行了1万次修改

缺点:

  • 丢失的数据大小取决于创建RDB文件的时间间隔,间隔越大,丢失越多。
  • 在服务器停机时丢失大量数据
  • RDB持久化是一种全量持久化操作,它在创建RDB文件时需要存储整个服务器包含的所有数据,并因此消耗大量计算资源和内存资源,频繁的进行持久化操作会导致Redis的性能急剧下降

2.AOF持久化方式的特点

优点:

  • 增量式持久化操作
  • AOF文件的冲洗频率设置决定了持久化的安全性,Redis默认配置appendSync为everysec,丢失数据时间窗口在1s内
  • AOF重写可以优化处理重复指令,减少AOF文件的大小

缺点:

  • 体积大,生成时间长。因为AOF文件存放的是协议文本,体积比同等数据的二进制文件要大。
  • 数据恢复速度慢,体积越大差距越明显。AOF持久化通过执行AOF中保存的Redis指令来间接恢复数据库,相比RDB的直接恢复要慢
  • AOF重写操作短暂占用系统大量资源。使用的BGREWRITEAOF指令需要创建子进程,占用系统大量资源,数据库体积大时,导致服务器被短暂的阻塞

3.RDB—AOF混合持久化

Redis从4.0版本开始引入了RDB—AOF混合持久化模式,该模式可以融合RDB和AOF的优点,即:通过AOF文件包含的RDB数据实现快速的数据恢复操作,又可以通过AOF文件中包含的AOF数据将丢失数据的时间窗口限制在1s内。

引用:
《Redis使用手册》黄健宏

原文地址:https://www.cnblogs.com/PengLuo22/p/13899388.html