• 【Redis】Redis的持久化


    目录

    传统数据库事务的ACID

    Redis的持久化方案

    持久化配置

    ①纯内存运行

    ②RDB模式

    优缺点

    临时文件

    触发RDB规则的情况

    如何恢复数据

    ③AOF模式

    日志文件

    优缺点


    传统数据库事务的ACID

     

    Redis的持久化方案

            ①在一定时间内,命令执行次数达到一定上限时,会生成一个文件,文件会不断覆盖,生成文件的IO操作少,但是可能会丢失数据。

            ②记录“写命令”

    每行命令都记录

    每秒记录一次命令

    不记录(默认)

            Redis是操作完之后才进行AOF日志记录(只记录操作的指令记录)

    持久化配置

            Redis是否具备持久化,取决于其持久化配置。

    ①纯内存运行

            不具备持久化,服务器一旦停机会导致数据丢失。

    ②RDB模式

            取决于RDB策略,满足策略的情况执行持久化。

    • 在指定的时间间隔对数据进行快照存储,恢复时会将快照文件直接读取到内存中。
    • Redis会单独创建一个(fork)子线程进行持久化操作,将数据写入到一个临时文件中,等待持久化操作结束后,将这个临时文件替换上次的临时文件,这个过程不执行IO操作,能够保证极高的性能。
    • 如果需要进行大批量的数据恢复,而且对数据恢复的完整性不非常敏感的话,RDB模式会比AOF模式更加高效。

    优缺点

    优点适合大规模数据、对数据要求不高的场景
    缺点需要一定时间间隔进行操作
    如果Redis意外宕机后,最后一次持久化后的数据可能会丢失
    fork线程会占用一定的时间与空间,因为它会产生临时文件

    临时文件

            RDB模式会产生临时文件的名字为:dump.rdb(在Redis启动目录下)

            在redis.conf配置文件有规定RDB执行的规则:

    默认:

    1. #   In the example below the behaviour will be to save:
    2. #   after 900 sec (15 min) if at least 1 key changed
    3. #   after 300 sec (5 min) if at least 10 keys changed
    4. #   after 60 sec if at least 10000 keys changed

    触发RDB规则的情况

            ①满足sava规则的情况。

            ②执行flushall(清除所有库中的所有key)。

            ③退出Redis时。

    如何恢复数据

            将rdb文件放入Redis启动目录,Redis启动时会检查是否存在rdb文件,存在则恢复数据。

    ③AOF模式

            程序会在执行命令/指令时将指令保存在硬盘上。【aop(追加)】

    • 记录每次对服务器的写操作,当服务器重启时会重新执行这些命令恢复原有数据,将全部记录在恢复时执行一遍。
    • 以日志的形式记录写入(set)操作,读(get)操作不记录,此日志文件尽可查看,如手动修改将损坏文件,即使使用redis-chek-aop.exe --fix修复工具进行修复也会缺失数据。

    日志文件

            日志的保存文件名是appendonly.aof

    1. #appendonly yes   开启aof模式
    2. #appendfsync always  每次都修改,消耗性能
    3. #appendfsync everysec  每秒修改一次,可能会丢失1秒的数据
    4. # appendfsync no  不开启aof模式

    优缺点

            优点:每次更新时同步,文件的完成性更好

            缺点:相较与edb文件,恢复速度慢,效率不高

     

  • 相关阅读:
    单例模式——多线程的线程池设计Java代码
    结构指针的使用
    Talk | UCSB博士生赵宣栋:生成式AI时代的水印技术
    OpenFeign源码1-环境搭建及核心类说明
    OpenGL环境搭建
    java开发工具IntelliJ IDEA全新版本V2022.2更新详情(二)
    自动化运维工具-----Ansible
    206、SpringBoot 整合 RabbitMQ 的自动配置类 和 对应的属性处理类 的知识点
    身为程序员哪一个瞬间让你最奔溃 ?
    Linux:mongodb数据库源码包安装(4.4.25版本)
  • 原文地址:https://blog.csdn.net/weixin_46005032/article/details/128024887