Redis提供两种持久化机制:RDB(默认的)和AOF机制。
RDB
概念:是Redis DataBase的缩写快照。
RDB是Redis的一种数据持久化到磁盘的策略,是一种以内存快照形式保存Redis数据的方式。所谓快照,就是把某一时刻的状态以文件的形式进行全量备份到磁盘,这个快照文件就称为RDB文件。RDB文件是经过压缩的二进制文件,占用空间很小,它保存了Redis某个时间点的数据集,很适合用于做备份。
✅优点:
1. 紧凑型文件:RDB文件是紧凑的二进制文件,比较适合做冷备,全量复制的场景。
2. 恢复速度快:RDB是数据的快照,基本上就是数据的复制,不用重新读取再写入内存。
3. 性能更高:RDB文件体积比AOF的小,因此其开启和加载的性能都较高。
4. 数据安全性低:RDB是每隔一段时间触发持久化,因此可能存在在持久化间隔期间的数据丢失。
❎缺点:
1. 数据安全性低:RDB是每隔一段时间触发持久化,因此可能存在在持久化间隔期间的数据丢失。
2. 不适合实时修改的数据:RDB存储的是某一时刻的数据集,对于频繁修改的数据,可能会导致大量数据的冗余。
AOF
AOF,全称Append Only File,是一种独立日志的方式记录每次写命令的持久化方法。当需要恢复数据时,Redis会重新执行AOF文件中的命令。这种方式主要解决了数据持久化的实时性问题,目前已经是Redis持久化的主流方式。
✅优点:
1. 数据安全性高:AOF可以更好的保护数据不丢失,一般每隔1秒,会通过一个后台线程执行一次fsync操作,最多丢失1秒钟的数据。
2. 写入性能较好:AOF日志文件以append-only模式写入,因此其写入性能比较优秀。
3. 同步策略灵活:Redis中提供了三种同步策略,即每秒同步、每修改同步和不同步,用户可以根据需求选择最适合的策略。
❎缺点:
1. 相同数据量下,AOF的文件体积比RDB大,因此其开启和加载的性能可能会相对较低。
2. AOF日志文件的写入操作比RDB的快照写入要慢,对于一些对性能要求较高的应用来说,这可能会成为一个问题。