目录
1. Redis 持久化的手段有哪些
2. RDB 和 AOF 有什么区别
2.1 RDB 持久化
2.2 AOF 持久化
2.2.1 AOF 持久化策略有哪些
3. 混合持久化是如何执行的(了解)
1. Redis 持久化的手段有哪些
Redis 持久化的手段有三种:
- 快照方式(RDB - Redis Database):将某一时刻的内存数据,以二进制的方式写入磁盘.
- 文件追加方式(AOF - Append Only File):记录所有操作的命令,并以文本的形式追加到文件中.
- 混合持久化:Redis 4.0 之后新增的方式,混合持久化是集 RDB 和 AOF 二者之长的一种持久化方式.
2. RDB 和 AOF 有什么区别
2.1 RDB 持久化
工作原理:
RDB 是通过快照的方式,将当前 Redis 内存中的数据以二进制的格式保存到磁盘,快照文件是一个经过压缩的二进制文件,它表示某一时刻,数据库的状态。
优缺点分析:
① 优点
- 效率高,RDB 以二进制的格式将数据存储磁盘,数据恢复快。
- 文件小,RDB 生成的快照文件,相较于 AOF 文件小,占用磁盘空间少。
② 缺点
- 数据丢失,因为 RDB 存储磁盘的动作是定期保存的,所以当 Redis 在快照之间发生故障,则可能丢失部分数据。(如果 10s 保存一次,在 9.99s 故障,那么这 9.99s 的数据都被丢失)
2.2 AOF 持久化
工作原理:
AOF 持久化是把每次的写操作都以日志的形式追加到文件中,所以它比 RDB 更可靠,数据不易丢失(顶多丢失一条数据,或者 1s 的数据)
优缺点分析:
① 优点
- 数据完整性好,AOF 持久化是把每一次写操作,都追加文件,所以它的数据更完整。
- 可读性高,AOF 是一个文本文件,相较于 RDB 的二进制文件来说,可读性要高。
- 提供了多种持久化策略,Redis 提供了不同的 AOF 持久化策略,可以根据数据的安全和性能进行选择。
② 缺点
- 文件较大,AOF 的文本文件相较于 RDB 的二进制文件要大,并且是文件追加的形式,所以数据恢复和重启的速度会受到影响。
- 频繁的写入磁盘,AOF 需要每次进行追加文件,所以会给磁盘带来一定的写入压力。
2.2.1 AOF 持久化策略有哪些
AOF 有三种持久化策略:
- alwaysL:每条 Redis 操作命令都会写入磁盘,最多丢失一条数据。
- everysec:每秒钟写入一次磁盘,最多丢失一秒的数据。(AOF 默认的持久化策略)
- no:不设置写入磁盘的规则,根据当前操作系统来决定。Linux 默认 30s 写入一次磁盘。
3. 混合持久化是如何执行的(了解)
混合持久化是在 AOF 重写的时候,把 Redis 的持久化数据,以 RDB 的格式写入到 AOF 文件开头,之后的数据再以 AOF 的格式追加到文件的末尾,它的文件格式如下:
混合持久化的执行流程图: