• redis-持久化-RDB


    RDB启动方式

    • 谁,什么时间,干什么事情

    命令执行

    • 谁:redis操作者(用户)
    • 什么时间:即时(随时进行) 
    • 干什么事情:保存数据

    RDB启动方式 —— save指令

    命令

    save

    作用:

     手动执行一次保存操作

    RDB启动方式 —— save指令相关配置

    • dbfilename dump.rdb

       说明:设置本地数据库文件名,默认值为 dump.rdb经验:通常设置为dump-端口号.rdb

    • dir

       说明:设置存储.rdb文件的路径 经验:通常设置成存储空间较大的目录中,目录名称data

    • rdbcompression yes

        说明:设置存储至本地数据库时是否压缩数据,默认为 yes,采用 LZF 压缩 经验:通常默认为开启状态,如果设置为no,可以节省 CPU 运行时间,但会使存储的文件变大(巨大)

    • rdbchecksum yes

        说明:设置是否进行RDB文件格式校验,该校验过程在写文件和读文件过程均进行 经验:通常默认为开启状态,如果设置为no,可以节约读写性过程约10%时间消耗,但是存储一定的数据损坏风险

    数据恢复
    直接启动server,在已经save下默认就会恢复

    RDB启动方式 —— save指令工作原理

    注意: save指令的执行会阻塞当前Redis服务器,直到当前RDB过程完成为止,有可能会造成长时间阻塞,线上环境不建议使用

    RDB启动方式

    • 数据量过大,单线程执行方式造成效率过低如何处理?

    后台执行

    • 谁:redis操作者(用户)发起指令;redis服务器控制指令执行 
    • 什么时间:即时(发起);合理的时间(执行)
    • 干什么事情:保存数据

    RDB启动方式 —— bgsave指令

    命令

    bgsave

    作用

      手动启动后台保存操作,但不是立即执行

    RDB启动方式 —— bgsave指令工作原理

    注意: bgsave命令是针对save阻塞问题做的优化。Redis内部所有涉及到RDB操作都采用bgsave的方式,save命令可以放弃使用。

    RDB启动方式 —— bgsave指令相关配置

    • dbfilename dump.rdb 
    • dir
    • rdbcompression yes 
    • rdbchecksum yes
    • stop-writes-on-bgsave-error yes

      说明:后台存储过程中如果出现错误现象,是否停止保存操作

      经验:通常默认为开启状态

    RDB启动方式

      反复执行保存指令,忘记了怎么办?不知道数据产生了多少变化,何时保存?
    

    自动执行

    • 谁: redis服务器发起指令(基于条件) 
    • 什么时间: 满足条件
    • 干什么事情: 保存数据

    RDB启动方式 ——save配置

    配置

    save second changes

    作用:满足限定时间范围内key的变化数量达到指定数量即进行持久化

    参数

    second:监控时间范围
    
    changes:监控key的变化量位置

    在conf文件中进行配置范例

    save 900 1
    save 300 10
    save 60 10000

    RDB启动方式 ——save配置原理

    注意: 

    • save配置要根据实际业务情况进行设置,频度过高或过低都会出现性能问题,结果可能是灾难性的
    • save配置中对于second与changes设置通常具有互补对应关系,尽量不要设置成包含性关系
    • save配置启动后执行的是bgsave操作

    RDB三种启动方式对比

    rdb特殊启动形式

     全量复制

     服务器运行过程中重启

    debug reload

     关闭服务器时指定保存数据

    shutdown save

    默认情况下执行shutdown命令时,自动执行bgsave(如果没有开启AOF持久化功能)

    RDB优点

    • RDB是一个紧凑压缩的二进制文件,存储效率较高
    • RDB内部存储的是redis在某个时间点的数据快照,非常适合用于数据备份,全量复制等场景 RDB恢复数据的速度要比AOF快很多
    • 应用:服务器中每X小时执行bgsave备份,并将RDB文件拷贝到远程机器中,用于灾难恢复。

    Rdb缺点

    • RDB方式无论是执行指令还是利用配置,无法做到实时持久化,具有较大的可能性丢失数据
    • bgsave指令每次运行要执行fork操作创建子进程,要牺牲掉一些性能
    • Redis的众多版本中未进行RDB文件格式的版本统一,有可能出现各版本服务之间数据格式无法兼容现象
  • 相关阅读:
    Spring Boot 启动(二) Environment 加载
    Spring Boot 启动(一) SpringApplication 分析
    Java 正则表达式之捕获组
    kylin 系列(一)安装部署
    CDH 安装
    JVM 字节码(四)静态方法、构造代码、this 以及 synchronized 关键字
    JVM 字节码(三)异常在字节码中的处理(catch 和 throws)
    JVM 字节码(二)方法表详解
    JVM 字节码(一)字节码规范
    Hadoop 系列(三)Java API
  • 原文地址:https://www.cnblogs.com/zhangchaoya/p/15236702.html
Copyright © 2020-2023  润新知