【大厂面试】面试官都爱问的 Redis 持久化 (RDB)

RDB 持久化的操作条件

  • 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
    save <seconds><changes>
    Redis 默认配置文件中提供了三个条件
    save 900 1 【表示 900秒(15分钟)内有1个更改】
    save 300 10【表示 300秒(5分钟)内有10个更改】
    save 60 10000【表示 60秒(1分钟)内有10000个更改】
  • 如果同时满足以上三个默认的条件 redis 就是自动缓存数据到 dump.rdb 这个文件中,当然我们也可以对这三个条件进行适当的修改,如下图所示:
    在这里插入图片描述

1. RDB 是什么?

  • 在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的 Snapshot 快照,它恢复时是将快照文件直接读到内存里
  • Redis 会单独创建 fork 一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化进程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何的IO操作的,这就确保了极高的性能,如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效,RDB的缺点是最后一次持久化后的数据可能丢失。

2. Fork 是什么?

  • Fork 的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是它是一个全新的进程,并作为原进程的子进程

3. Rdb 保存的是 dump.rdb 文件

  • 首先我们编辑 redis.conf 这个文件,一般我们都是在 linux 上面来玩 redis,而 redis 安装位置我们默认都是安装在 /opt/这个目录下,然后我们找到 redis 的安装目录,进入目录中编辑 redis.conf 这个文件,如果大家对这个 redis.conf 配置文件不怎么了解,可以看下我之前发过的博客【大厂面试】Redis 中的 redis.conf 配置文件详解,然后我们可以找到 dump.rdb 这个文件的位置
    在这里插入图片描述
  • 然后我们找到要看的内容
    在这里插入图片描述

4. 配置位置

  • 配置位置默认就是你在哪里启动 redis 服务,就会在哪里生成 dump.rdb 这个文件,比如说我,我一般启动 redis 都是在 redis 的安装目录中启动 redis ,而对应的 dump.rdb 持久化文件也就默认在这个目录中创建,如下图所示:
    在这里插入图片描述
  • 然后我们也可以修改它自动生成的位置,如下图所示:
    在这里插入图片描述

5. 如何触发 RDB 快照

  • 配置文件中默认的快照配置
    冷拷贝后重新使用,可以拷贝 cp dump.rdb dump_new.rdb
  • 命令 save 或者是 bgsave 都可以对 redis 进行保存持久化操作
Save:save 时只管保存、其他不管、全部堵塞
bgsave:Redis 会在后台异步进行快照操作,快照同时还可以响应客户端

请求,可以通过 lastsave 命令获取最后一次成功执行快照的时间

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

6. 如何恢复

  • 将备份文件(dump.rdb)移动到redis安装目录并启动服务即可
  • CONFIG GET dir 获取目录

7. 优势

  • 适合大数据的数据规模
  • 对数据完整性和一致性要求不高

8. 劣势

  • 在一定时间间隔做一次备份,所以如果 redis 意外 down 掉的话,就会丢失最后一次快照后的所有修改
  • Fork 的时候,内存中的数据被克隆了一份,大约2倍的膨胀性需要考虑

9. 如何停止

  • 动态所有停止 RDB 保存规则的方法:
  • 此命令意思就是在进入 redis 命令行时就停止 redis 持久化的操作
redis-cli config set save ""
发布了72 篇原创文章 · 获赞 398 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_43647359/article/details/105728828