zoukankan      html  css  js  c++  java
  • redis 的持久化

    原理: 

         redIs 是使用内存进行数据缓存的,但是它可以将内存中数据保存到磁盘上

    从而实现数据持久保存的目的,

         redis  支持两种不同方式的数据持久化保存机制,RDB和AOF

    一。RDB 模式

    RDB 是基于时间的快照,只保留当前最新的一次快照

            特点是执行的速度比较快

            缺点是可能丢失数据(从上次快照到当前快照未完成之间的数据)

    RDB 实现数据备份的过程:

     1》redis 从主进程中先fork 一个子进程,采用写时复制机制

     2》子进程将内存中的数据保存为一个临时文件,dump.rdb.temp,当数据保存完成之后再将上次保存的RDB 文件替换掉,

     3》关闭子进程

    说明: 

         如果直接替RDB 文件的时候就可能会出现突然断电等问题而导致RDB 文件还么有保存完整就突然关机,从而导致数据的丢失,

         可以手动将每次生成的RDB 文件进行备份,这样可以最大化保存历史数据

     二

    二。RDB 模式的优缺点

    优点:

         1.   RDB 快照保存了某个时间点的数据

             可以通过脚本执行bgsave (非阻塞) 或者save (阻塞)命令自定义时间点备份

              可以保留多个备份,当出现问题的时候就可以恢复到不同时间点的数据

        2.可以最大化IO 的性能

              因为父进程再保存RDB 文件的时候唯一要做的是fork 出一个子进程,然后的操作都会由这个子进程操作,父进程无需任何IO 

        3.RDB 在恢复大量数据的时候比AOF 快

    缺点:

        1.不能时时保存数据,会丢失一部分数据

         2.数据量非常大的时候,从父进程fork 的时候需要一点点时间,可能是毫秒或者秒

     

    三:AoF 模式

    原理: 

            AOF 是安装操作顺序,将指令添加到日志文件中,

             特点:是数据安全性相对比较高

              缺点:是有些操作是重复的也会全部记录

       AOF 和RDB 一样使用了,写时复制机制

       AOF 默认是每秒fsync 一次,即使服务器发生故障的话顶多也就丢失1秒钟之内的数据

        fsync 会在后台执行线程,所以主线程可以继续处理用户的正常请求而不受到写入AOF 文件的IO 影响

        

    AOF 的文件大小要大于RDB 格式的文件(因为写入重复的数据)

  • 相关阅读:
    Struts2框架详解
    Eclipse利用Axis2插件构建Web Service并测试
    解决JS中各浏览器Date格式不兼容的问题
    Struts2框架下表单数据的流向以及映射关系
    JMS总结
    第一次博客园
    微信OAuth2网页授权
    将List转换成DataTable
    对文件的读写操作
    Excel文件的导出操作
  • 原文地址:https://www.cnblogs.com/huateng/p/14492381.html
Copyright © 2011-2022 走看看