• redis的持久化


    redis为什么要有持久化?
    redis是内存数据库,如果不将内存中的数据库状态保存到磁盘中,如果宕机或断电,数据就会丢失,所以redis提供了持久化功能。
    持久化过程是怎么样的?
    redis会创建一个子进程,然后将数据写入一个临时文件,在持久化过程结束之后,再用这个临时文件替换上次持久化好的文件。

    一、RDB(redis database)

    在默认情况下,redis是 使用RDB进行持久化,保存的文件为dump.rdb

    1、如何触发rdb?

    (1)在redis的配置文件中,有一条命令sava [时间] [更改条数],指在这个时间内进行更改,符合这条命令下,就会创建一个dump.rdb文件,而各个文件会替换掉旧的dump文件
    在这里插入图片描述
    (2)在执行flushall时,也会触发rdb规则,也就是会生成一个dump.rdb文件
    (3)在退出redis时,也会产生rdb文件

    2、数据如何恢复?

    :如何恢复数据?也就是在dump.rdb文件中的数据如何恢复?
    :将rdb文件放在redis的启动目录之下,redis在启动的时候就会恢复dump.rdb的数据
    在这里插入图片描述

    3、优缺点

    优点:适合大规模的数据恢复、对数据的完整性要求不高
    缺点:需要一定的时间间隔进程进行操作,如果在这个时间中意味宕机,那修改的数据也就没有了;在fork进程时,会占用一定的内存空间。

    二、AOF(append only file)

    1、触发条件

    追加文件,其实就是将执行的写的命令都记录下来,在恢复的时候,就将文件全部执行一遍,达到数据恢复的作用,保存的文件为appendonly.aof文件
    在这里插入图片描述
    所以只需要将 appendonly no 改为 appendonly yes 即可
    更改完毕后需要将redis服务重启
    在这里插入图片描述
    在appendonlf.aof文件中就会记录每次的修改命令

    2、appendonlf.aof文件出现人为修改,导致文件命令出现问题,如何解决

    文件出现异常时,在使用客户端连接服务端是进不去的,所以必须作出更改,在与redis-server同级目录下有一个文件 redis-check-aof,同样其实还有一个 redis-check-rdb ,都是用来检查异常并作出修改,这里以redis-check-aof为例

    在这里插入图片描述

    3、优缺点

    优点:每次修改都进行同步
    缺点:aof文件远大于rdb,修复数据肯定也比rdb慢

    4、重写规则

    fork一个子进程来重写appendaof.aof文件,压缩为更小的文件
    在这里插入图片描述

    5、如何恢复数据?

    与rdb一样,但是需要将前面清除数据的命令删除,如果是意外数据丢失,可直接重启redis-server进行数据恢复,可能重启之前需要进行redis-check-aof,也就是需要进行上面的第二步骤

  • 相关阅读:
    在M1Mac上为GIMP安装G‘MIC插件
    【arduino】I/O端口操作
    Mysql多表设计
    【算法与数据结构】--前言
    线程池实现简单案例(C语言)
    Go 语言 设计模式-抽象工厂模式
    纠删码项目总结
    IT项目管理中如何沟通?
    java.lang.ClassNotFoundException: javafx.util.Pair的问题解决与原因详解
    【单片机基础】初始51单片机
  • 原文地址:https://blog.csdn.net/weixin_44975592/article/details/126248440