【夯实Redis】Redis持久化

Redis两种持久化策略

        RDB:周期性的备份缓存数据。

        AOF: AOF是将所有的Redis的写命令记录到文件("appendonly.aof")中,这个文件叫做AOF文件。

备份文件如何处理

        RDB备份方式会产生dump.rdb文件,AOF会产生appendonly.aof文件。实际生产上一般会同时开启这两种持久化方式。

        Redis重启的时候,优先加载AOF文件,因为AOF文件备份的数据更加完整。

        一般会把备份文件存放到第三方,例如阿里云文件服务器上。

生产上如何配置

         实际生产上一般会同时开启这两种持久化方式。

         RDB在redis.conf文件按照如下配置方案。

         AOF在redis.conf文件按照如下配置方案。

RDB优缺点

        (1)Redis重启读取RDB文件速度会快速与AOF文件

        (2)RDB在备份文件的时候,会fork一个子进程,不会阻塞主进程。

        (3)一般RDB备份周期会长于AOF备份方式,所以会比AOF丢失更多的数据。并且如果RDB文件特别大的话,fork得时候会暂停Redis服务数毫秒,甚至几秒。

AOF优缺点

        (1)AOF是每隔1秒就执行备份一次,所以相对RDB方式丢失的数据少。

        (2)但是AOF文件大于RDB文件,恢复速度也比RDB慢。

持久化遇到的坑

情景:开启rdb,关闭aof,待dump.rdb有数据后,再开启aof

现象:在已经有RDB文件的时候,且Redis此时是关机状态。修改配置文件开启AOF方式,重启Redis得时候优先读取AOF文件,则加载了一个空的AOF文件。现象就是Redis中未恢复任何备份数据。

解决方式:停止redis,关闭aof,重启redis,确保dump.rdb数据恢复在内存中,使用命令行热修改redis配置的方式打开aof,此时redis就会以aof持久化的形式将内存中的数据写入appendonly.aof文件,然后停止redis,修改配置文件将aof手动打开。


原文:redis持久化dump.rdb后,启用aof持久化,再重启redis,redis只会加载aof持久化的appendonly.aof文件,如果它不存在,那会创建一个新的空的文件,从而导致内存中丢失dump.rdb的数据。


参考文档

                  Redis持久化之RDB

                  Redis持久化之AOF

阅读更多 

        跟着大宇学Redis--------目录帖

posted @ 2022-07-17 12:13  小大宇  阅读(2)  评论(0编辑  收藏  举报