本文共 1563 字,大约阅读时间需要 5 分钟。
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/