美文网首页
Redis持久化 - RDB模式

Redis持久化 - RDB模式

作者: 愤怒的红蓝色 | 来源:发表于2020-05-10 17:30 被阅读0次

Redis作为一种内存型数据库,它将所有的数据都保存在服务器内存中。所以如果不想办法将存储在内存中的数据保存到磁盘里面,那么一旦服务器故障或者断电导致服务器进程推出,那么Redis中保存的数据都将消失不见。

为此,Redis 提供了数据持久化机制,它能够在 Redis 运行过程中将内存中的数据持久化到磁盘中,万一服务器故障导致进程意外退出,可以根据持久化出来的文件恢复 Redis 数据。目前 Redis 提供的持久化模式有两种:RDB模式和AOF模式。

RDB 持久化功能所生成的 RDB 文件是一个经过压缩的二进制文件,通过该文件我们可以还原生成该 RDB 文件时数据库的状态。因为 RDB 文件是保存在磁盘中的,所以即便 Redis 服务进程退出,甚至运行 Redis 服务器的计算机宕机,只要磁盘中 RDB 文件存在,我们就能将数据恢复。

一、RDB 文件的创建与载入

有两个命令能生成 RDB 文件,一个是 SAVE,另一个是 BGSAVE。

这两者实现的功能相同,唯一的区别就是 SAVE 命令会阻塞 Redis 服务器进程,直到 RDB 文件生成完毕,在此期间将无法执行新的命令。BGSAVE 命令不会阻塞服务器进程,它采用的方法是派生一个子进程,然后由子进程去生成 RDB 文件,服务器进程则可以继续执行新的命令。

图一、redis.conf 文件<

如图一所示,配置文件 redis.conf 文件中说明了生成的 RDB 文件的名称以及保存路径,当然这些都是可以自定义的。保存路径采用了相对路径的方式,默认跟 redis.conf 文件保存在一个文件夹下(/etc/redis-5.0.7/etc/dump.rdb)。

生成 RDB 文件后,该文件的载入过程是在 Redis 服务器启动过程中载入的,只要 Redis 服务器在启动过程中检测到 RDB 文件的存在,他就会自动载入 RDB 文件。相较于 AOF 持久化模式生成的 AOF 文件,RDB 文件的更新频率更慢,所以:

  • 如果服务器开启了 AOF 持久化功能,那么服务器会优先使用 AOF 文件来还原数据。
  • 只有 AOF 持久化功能处于关闭状态,服务器才会使用 RDB 文件来还原数据

二、自动间隔性保存

除了上面提到的 SAVE 和 BGSAVE 命令可以手动生成 RDB 文件外。用户也可以在配置文件中的 save 选项设置多个保存条件,只有任何一个条件满足,服务器都会执行 BGSAVE 命令。redis 服务器设置自动间隔保存为:

图二、默认自动保存时间间隔

对上述配置的解释是:

  • 服务器在900秒之内,对数据库进行了至少1次修改
  • 服务器在300秒之内,对数据库进行了至少10次修改
  • 服务器在60秒之内,对数据库进行了至少100000次修改
图三、redis 日志文件

图三是我在执行一次 set msg hello 命令后,触发了 redis 自动保存条件而进行的一个 BDGSAVE 操作。

对于生成的 RDB 文件我们可以使用 od 命令去查看文件:

图四、生成的RDB文件

三、 RDB 持久化的优缺点

1、优势

  • RDB 文件保存了 Redis 在某一时刻的数据信息,恢复的时候直接加载到内存即可,不用做其他处理,这种文件适合用于做灾备处理
  • RDB 在恢复大数据集的时候比 AOF 恢复速度快

2、劣势

  • RDB 难以做到实时的数据持久化,发生事故时,上一次持久化时间到事故发生时的数据将无法得到持久化,恢复时造成数据丢失。
  • RDB 做持久化时都是新建一个子进程去处理,如果Redis 数据量比较大,那么子进程去生成 RDB 文件的时间将会比较长

知乎个人主页链接

相关文章

  • redis持久化机制

    redis持久化机制的原理 一、两种实现redis持久化的机制,RDB模式和AOF模式 ①RDB模式 ②AOF模式...

  • Redis缓存持久化策略

    Redis RDB持久化原理 简介:rdb持久化方案配置讲解,redis的开发者是怎么实现rdb的 rdb持久化配...

  • Redis持久化

    Redis持久化方式有两种:RDB和AOF。 1 RDB持久化 RDB(Redis Database)持久化是把当...

  • redis-2

    redis-2 redis的持久化 Redis 提供了 RDB 和 AOF 两种持久化方式。 RDB RDB 是把...

  • 03-redis持久化

    Redis持久化 两种方式持久化: RDB持久化 - 全量 AOF持久化 - 增量 RDB持久化 RDB文件的生成...

  • Redis的持久化方式:RDB和AOF

    一,redis的持久化方式:RDB和AOF RDB,即Redis Database RDB持久化方式:在指定的时间...

  • Redis的两种持久化操作RDB-AOF

    相对来说RDB这种持久化模式更加适合较多的场景 以下转载 Redis支持RDB和AOF两种持久化机制,持久化功能有...

  • 「高频面试题」Redis的持久化方式有哪些?

    RDB RDB(Redis DataBase)持久化是把当前Redis中全部数据生成快照保存在硬盘上。RDB持久化...

  • 3.Redis的持久化

    0.redis持久化1.RDB模式2.AOF模式 0.redis 持久化 redis 虽然是一个内存级别的缓存程序...

  • redis mongodb持久化的方式

    redis持久化方式(两种) RDB持久化 redis提供了RDB持久化的功能,这个功能可以将redis在内存中的...

网友评论

      本文标题:Redis持久化 - RDB模式

      本文链接:https://www.haomeiwen.com/subject/izgjnhtx.html