> 文章列表 > REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

文章目录

  • ①. RDB概述及作用
  • ②. RDB - 自动触发
  • ③. 手动触发 - save、bgsave
  • ④. RDB - 优势体现
  • ⑤. RDB - 劣势体现
  • ⑥. 哪些情况会触发RDB快照
  • ⑦. RDB优化配置项详解

①. RDB概述及作用

  • ①. RDB概述:在指定的时间间隔,执行数据集的时间点快照
  1. 实现类似照片记录效果的方式,就是把某一时刻的数据和状态以文件的形式写到磁盘上,也就是
    快照。这样一来即使故障宕机,快照文件也不会丢失,数据的可靠性也就得到了保证
  2. 这个快照文件就称为RDB文件(dump.rdb),RDB就是Redis DataBase的缩写
  3. RDB官方网址
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解
  • ②. RBD文件的作用
  1. 在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot内存快照,它恢复时再将硬盘,快照文件直接读回到内存里
  2. Redis的数据都在内存中,保存备份时它执行的是全量快照,也就是说,把内存中的所有数据都记录到磁盘中
  3. RDB保存到磁盘的文件叫dump.rdb

②. RDB - 自动触发

  • ①. Redis6.0.16以下配置文件情况如下:
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

  • ②. 本次案例5秒2次修改
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

  • ③. 修改dump文件保存路径、修改dump文件名称
    自定义修改的路径且可以进入redis里用CONFIG GET dir获取目录
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

  • ④. 第1种触发情况:
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

  • ⑤. 第二种触发情况:
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

  • ⑥. 备份成功后故意用flushdb清空redis,看看是否可以恢复数据
    执行flushall/flushdb命令也会产生dump.rdb文件,但里面是空的,无意义

    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

③. 手动触发 - save、bgsave

  • ①. Redis提供了两个命令来⽣成RDB⽂件(手动触发),分别是save和bgsave
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

  • ②. Save - 不推荐使用
    在主程序中执⾏会阻塞当前redis服务器,直到持久化工作完成,执行save命令期间,Redis不能处理其他命令,线上禁止使用
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

  • ③. BGSAVE(默认):Redis会在后台异步进行快照操作,不阻塞快照同时还可以响应客户端请求,该触发方式会fork一个子进程由子进程复制持久化过程
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

  • ④. 可以通过lastsave命令获取最后一次成功执行快照的时间
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

④. RDB - 优势体现

  • ①. 官网说明
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

  • ②. 适合大规模的数据恢复

  • ③. 对数据完整性和一致性要求不高

  • ④. RDB文件在内存中的加载速度要比AOF快得多

⑤. RDB - 劣势体现

  • ①. 官网说明:
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

  • ②. 在一定间隔时间做一次备份,所以如果redis意外down掉的话,就会丢失从当前至最近一次快照期间的数据,快照之间的数据会丢失

  • ③. 内存数据的全量同步,如果数据量太大会导致I/0严重影响服务器性能

  • ④. 数据丢失案例
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

⑥. 哪些情况会触发RDB快照

  • ①. 配置文件中默认的快照配置

  • ②. 执行flushall/flushdb命令也会产生dump.rdb文件,但里面是空的,无意义

  • ③. 手动save/bgsave命令

  • ④. 执行shutdown且没有设置开启AOF持久化

  • ⑤. 主从复制时,主节点自动触发

⑦. RDB优化配置项详解

  • ①. 动态所有停止RDB保存规则的方法:redis-cli config set save “” ,配置文件如下:
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

  • ②. 常用的RDB配置如下:

  1. save <seconds> <changes>
  2. dbfilename:文件名称
  3. dir:文件目录
  • ③. stop-writes-on-bgsave-error:默认yes
    如果配置成no,表示你不在乎数据不一致或者有其他的手段发现和控制这种不一致,那么在快照写入失败时也能确保redis继续接受新的写请求
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

  • ④. rdbcompression:默认yes
    对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

  • ⑤. rdbchecksum:默认yes
    在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解

  • ⑥. rdb-del-sync-files:在没有持久性的情况下删除复制中使用的RDB文件启用。默认情况下no,此选项是禁用的
    REDIS02_RDB概述及作用、自动触发、手动触发、优势劣势、触发场景、配置项详解