Redis 混合持久化

(一)Redis 4.0 混合持久化

  重启Redis时,我们很少使用RDB来恢复内存状态,因为会丢失大量数据。我们通常使用AOF日志重放。

  但是重放AOF日志性能相对RDB来说要慢很多,这样在Redis实例很大的情况下,启动需要花费很长的时间。

  Redis4.0 为了解决这个问题,带来了一个新的持久化选项 --- 混合持久化。

  通过如下配置可以开启混合持久化(必须先开启AOF)

# aof‐use‐rdb‐preamble yes

  

  如果开启了混合持久化,AOF在重写时,不再是单纯将内存数据转换为RESP命令写入AOF文件,而是将重写这一刻之前的内存做RDB快照处理

  并且将RDB快照内容和增量的AOF修改内存数据的命令存在一起,都写入新的AOF文件,新的文件一开始不叫appendonly.aof,等到重写完新的AOF文件

  才会进行改名,覆盖原有的AOF文件,完成新旧两个AOF文件的替换。

  于是在Redis重启的时候,可以先加载RDB的内容,然后再重放增量AOF日志就可以完全替代之前的AOF全量文件重放,因此重启效率大幅得到提升

  

   

     Redis 数据备份策略

      1   写crontab 定时调度脚本,每小时copy一份rdb或aof的备份到一个目录中去,仅仅保留最近48小时的备份

    2   每天都保留一份当日的数据备份到一个目录中去,可以保留最近一个月的备份

    3   每次copy备份的时候,都把太旧的备份给删了

       4   每天晚上将当前机器上的备份复制一份到其他机器上,以防机器损坏

  


(二) Redis 主从架构

    

      


(三)Redis 主从工作原理

  如果你为master配置了一个slave,不管这个slave是否是第一次连接上Master,它都会发送一个PSYNC命令给master请求复制数据。

  master收到PSYNC命令后,会在后台进行数据持久化通过bgsave生成最新的rdb快照文件,持久化期间,master会继续接受客户端的请求,

  他会把这些可能修改的数据集的请求缓存在内存中,当持久化进行完毕以后,master会把这份rdb文件数据集发送给slave,slave会把接收到的数据进行持久化生成rdb,然后在加载到内存中。

  然后,master再将之前缓存在内存中的命令发送给slave.

  当master与slave之间的连接由于某些原因而断开时,slave能够自动重连Master,如果master收到了多个slave并发连接请求,他只会进行一次持久化,而不是一个连接一次,然后再把这一份

  持久化的数据发送给多个并发连接的slave

  主从复制流程图:

  


     

    

        人生岔路口

        

              如何进行选择

原文地址:https://www.cnblogs.com/misscai/p/14454343.html