博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【大厂面试】面试官都爱问的 Redis 持久化 (RDB)
阅读量:3946 次
发布时间:2019-05-24

本文共 1563 字,大约阅读时间需要 5 分钟。

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 配置文件不怎么了解,可以看下我之前发过的博客,然后我们可以找到 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 ""

转载地址:http://ipqwi.baihongyu.com/

你可能感兴趣的文章
CSS块元素、内联元素、内联块元素详解------Sestid
查看>>
Js实现跟随鼠标移动的小球------Sestid
查看>>
HTML图像,链接,列表,表格等详细介绍------Sestid
查看>>
Js实现的俄罗斯方块小游戏------Sestid
查看>>
Js实现贪吃蛇小游戏------Sestid
查看>>
jQuery常用方法(持续更新)
查看>>
原生js实现自定义倒计时效果------Sestid
查看>>
原生js实现生成随机验证码=------Sestid
查看>>
js实现购物时选带属性的商品------Sestid
查看>>
点击出现对应界面(第二个界面可以选择显示内容)------Sestid
查看>>
Js实现炫酷仿抖罗盘时钟------Sestid
查看>>
vivo官网鼠标触碰图片拉长------Sestid
查看>>
canvas画布实现的集中效果
查看>>
Js实现点击置顶效果(带动画)
查看>>
Js实现input全选、全不选、反选功能------Sestid
查看>>
纯css实现好看的背景------Sestid
查看>>
为什么我的CSDN上都是开关灯??????Js实现开灯关灯特效
查看>>
Js实现生成自定义输入行列宽高表格------Sestid
查看>>
Js实现购物车加减,价格计算等功能
查看>>
Js自定义快捷键并实现上下左右移动
查看>>