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使用手册》黄健宏