• Redis 持久化


    (一)RDB快照

        在默认情况下,Redis将内存数据快照保存在名字为dump.rdb的二进制文件中

           可以对Redis进行设置,让它在 N秒内数据集至少有M个改动 这一条件被满足时,自动保存一次数据集

        例如: 

           以下设置会让Redis在满足 60秒内至少有1000个键被改动 这一条件 自动保存一次数据集

           # save 60 1000        //关闭RDB只需要将所有的save 保存策略注释掉即可

        

        可以手动执行命令生成RDB快照,进入redis客户端执行命令save 或 bgsave 可以生成dump.rdb文件

        每次命令执行都会将所有redis内存快照到一个新的rdb文件里,并覆盖原有rdb快照文件

        bgsave 的写时复制机制

        Redis借助操作系统提供的写时复制技术(Copy-On-Write,COW),在生成快照的同时,依然可以正常处理写命令。

        简单来说,bgsave子进程是由主线程fork生成的,可以共享主线程的所有内存数据

        bgsave子进程运行后,开始读取主线程的内存数据,并把它们写入RDB文件。

        此时,如果主线程对这些数据也都是读操作,那么,主线程和bgsave子进程相互不影响。

        但是,如果主线程要修改一块数据,那么,这块数据就会被复制一份,生成该数据的副本。

        然后,bgsave子进程会把这个副本数据写入RDB文件,而在这个过程中,主线程仍然可以直接修改原来的数据

        

         配置自动生成rdb文件后台使用的是bdsave方式

       


     (二)  AOF (append-only file)

        快照功能并不是非常耐久(durable) : 如果Redis因为某些原因而造成故障停机,那么服务器将丢失最近写入,且仍未保存到快照中的那些数据。

        从1.1 版本开始,Redis 增加了一种完全耐久的持久化方式:AOF持久化,将修改的每一条指令记录进文件appendonly.aof中(先写入os cache,每隔一段时间fsync到磁盘)

        

         这是一种resp协议格式数据,星号后面的数字代表命令有多少个参数,$号后面的数字代表这个参数有几个字符

         注意,如果执行带过期时间的set命令,aof文件里记录的并不是执行的原始命令,

         而是记录key过期的时间戳

            

        你可以通过修改配置文件来打开AOF功能

     # appendonly yes
    

        从现在开始,每当Redis执行一个改变数据集的命令时(比如set),这个命令就会被追加到AOF文件的末尾

        这样的话,当Redis重新启动时,程序就可以通过重新执行AOF文件中的命令来达到重建数据集的目的

        你可以配置Redis多久才将数据fsync到磁盘一次

        有三个选项

          

         推荐(并且也是默认)的措施为每秒fsync一次,这种fsync一次,这种fsync策略可以兼顾速度和安全性。


     (三) AOF重写

        AOF文件里可能有太多没用指令,所以AOF会定期根据内存的最新数据生成aof文件

        

           重写后AOF文件里变成

               

          

         当然AOF还可以手动重写,进入redis客户端执行命令bgrewriteaof重写AOF

         注意,AOF重写redis会fork 出一个子进程去做(与bdsave命令类似),不会对redis正常命令处理有太多影响

        


           生活真是充满希望那!!!!!!!!!

                奥里给 

  • 相关阅读:
    rsync 服务器配置过程
    百度基础技术总结
    利用cobbler无人值守批量安装centos
    安装批量装机工具cobbler过程
    面试题
    JS作用域
    原型链
    ES6优缺点
    PostCSS理解与运用
    置换元素和非置换元素
  • 原文地址:https://www.cnblogs.com/misscai/p/14449623.html
Copyright © 2020-2023  润新知