谈谈 Redis 持久化机制,RDB、AOF

谈谈 Redis 持久化机制,RDB,AOF
RDB:相当于对内存中的数据,拍一张数据快照。存储的是数据。
AOF:存储的是具体的命令。

企业实践中,实际是使用RDB结合AOF。
这个方法是在 Redis 4.0 提出的,该方法叫混合使用 AOF 日志和内存快照,也叫混合持久化。
如果想要开启混合持久化功能,可以在 Redis 配置文件将下面这个配置项设置成 yes:
aof-use-rdb-preamble yes
也就是说,使用了混合持久化,AOF 文件的前半部分是 RDB 格式的全量数据,后半部分是 AOF 格式的增量数据。
这样的好处在于,重启 Redis 加载数据的时候,由于前半部分是 RDB 内容,这样加载的时候速度会很快。
加载完 RDB 的内容后,才会加载后半部分的 AOF 内容,这里的内容是 Redis 后台子进程重写 AOF 期间,主线程处理的操作命令,可以使得数据更少的丢失。

Redis重启恢复数据的时候,优先加载AOF文件,因为AOF文件更能保证数据的完整性。
在 Redis 恢复数据时, RDB 恢复数据的效率会比 AOF 高,因为直接将 RDB 文件读入内存就可以,不需要像 AOF 那样还需要额外执行操作命令的步骤才能恢复数据。
用 AOF 日志的方式来恢复数据其实是很慢的,因为 Redis 执行命令由单线程负责的,而 AOF 日志恢复数据的方式是顺序执行日志里的每一条命令,如果 AOF 日志很大,这个「重放」的过程就会很慢了

重写AOF的时候,如果有 bgsave 命令,是不会执行的。
所以说,不要在业务繁忙的时候,进行AOF文件的重写。

你可能感兴趣的:(Redis,redis,数据库,缓存,持久化机制)