zoukankan      html  css  js  c++  java
  • 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

      主从复制流程图:

      


         

        

            人生岔路口

            

                  如何进行选择

  • 相关阅读:
    第一章ASP.NET SignalR简介
    第六章SignalR的服务器广播
    第五章SignalR的实时高频通讯
    第四章SignalR自托管主机
    第三章SignalR在线聊天例子
    第二章SignalR所支持的平台
    DevExpress ASPxHtmlEditor控件格式化并导出Word (修复中文字体导出丢失)
    改进的简单Tooltips显示
    C# WebForm 使用NPOI 2 生成简单的word文档(.docx)
    一些自用的小工具,分享给非程序猿们
  • 原文地址:https://www.cnblogs.com/misscai/p/14454343.html
Copyright © 2011-2022 走看看