zoukankan      html  css  js  c++  java
  • Redis持久化

     

    redis的持久化分为两种:

    • RDB(redis database)

        将缓存放到一个文件中,默认一段时间去存储一次

        会将内容先放到缓存文件,持久化结束之后,就用缓存文件代替上一次的持久化文件

        优点:会调用子进程来保持持久化,不会有数据库I/O

        缺点:如果持久化的时候数据库丢失了数据,因为是’覆盖的‘所以,就找不到数据了,故适用于不太重要的数据

        简单来说: rdb文件小,易备份,易恢复,恢复快

    • AOF(append only file)

        默认每秒去存储历史命令

        保存的是数据的历史指令,恢复数据的时候是将命令从前到后在执行一遍

        优点:遇突发情况的话能找到以前的记录,且数据丢失较少(1s)

        缺点:每次都有IO操作,对服务器压力较大

        总结:回复慢,数据完整性好,不易备份

      redis的一大特点就是可以将数据进行持久化,在一定程度上确保了数据的安全性,但不是绝对的;首先持久化分为rdb(快照持久化)和aof(精细持久化);

    快照持久化:

      是默认开启的;会自动保存数据,当启动时会在文件夹中生成dump.rdb文件;存放持久化后的数据;

      当然我们也可以设置持久化的频率,在redis.conf文件中通过save进行设置,默认有三种情况,每秒超过一万数据或每5分钟有10条数据的时候再或者每15分钟有1条记录,都会执行快照持久化,当然也可以通过bgsave的方法来手动进行一个快照持久化;(也可以通过ip和端口号就给别人进行手动持久化);如果频繁的快照持久化,会降低性能和效率,但是这样也出现了一个问题,就是当一分钟内如果有一万条数据时,不会提交,但是在下一次提交之前,停电了,这样就会丢失掉这些数据;

      当时想到的解决方法就是和(AOF)精细持久化进行一个结合,达到一个秒级的持久化;这个持久化需要我们手动进行开启,(注意,AOF开启之后,之前的数据都会丢失,所以要在一开始使用时就要配置好)开启的方法就是在配置redis.conf,将appendonly 改为yes;同时还可以更改文件名称;然后重新启动服务,这时精细化持久化就启动好了;

      在快照持久化的同时,我们进行精细持久化,

      比如,我们每隔一个小时进行一次快照持久化,这中间我们添加精细持久化;当55分的时候宕机了,我们还是可以通过RDB和AOF来恢复我们的数据,尽可能减少了损失;等到一个小时以后我们进行了快照持久化,数据就会保存在rdb的文件中,我们就可以将aof的持久化文件重新开始;

       

    关于精细持久化也存在三个配置,

    always只要发生改变就会发生持久化,这样是很浪费性能的,不推荐使用(我们的CPU不用干其他工作了,就在这里看着持久化)

    everysec每秒进行一次快照持久化;推荐使用这种

    no 是不确定,看服务器的使用情况(心情)来定(不安全,不推荐)

    我们还可以通过把rdb文件和aof文件复制到另外一个redis服务器上,就可以共享数据;

  • 相关阅读:
    快速入门各种跨域
    常用知识点
    比较少用的格式
    git
    “没有用var声明的为全局变量”这种说法不准确
    类数组对象
    函数上下文的变量对象实例
    var a =10 与 a = 10的区别
    原型链与作用域链、执行上下文
    闭包的作用
  • 原文地址:https://www.cnblogs.com/szwdun/p/10999005.html
Copyright © 2011-2022 走看看