1. rdb
1.1 rdb 概念
在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话的SnapShot快照,它恢复时是将快照文化直接读到内存里
1.2 rdb 工作机制
每隔一段时间,就把内存中的数据保存到硬盘上的指定文件中
1.3 rdb是默认开启的
1.4 rdb的持久化过程
redis会单独创建一个子进程来进行持久化,先将数据写入到一个临时文件中,等到持久化
过程都结束了,再用这个临时文件替换上次持久化好的文件,整个过程中,主进程不进行任何IO操作,这就确保了极高的性能。
1.5 rdb的优缺点
优点:数据恢复规模大,恢复完整性不敏感时,rdb比AOf更加高效
缺点:最后一次持久化的数据可能丢失
1.6 rdb的保存策略
save 900 1 900 秒内如果至少有 1 个 key 的值变化,则保存
save 300 10 300秒内如果至少有 10 个 key 的值变化,则保存
save 60 10000 60秒内如果至少有 10000 个 key 的值变化,则保存
save “” 就是禁用 RDB 模式;
1.7 RDB的常用属性配置
属性 | 含义 | 备注 |
---|---|---|
save | 保存策略 | |
dbfilename | rdb快照文件名 | |
dir | rdb快照保存的目录 | 必须是一个目录,不能是文件名 |
stop-writes-on-bgsaveerror | 是否在备份出错时,继续接受写操作 | 如果用户开启了 RDB 快照功能,那么在redis 持久化数据到磁盘时如果出现失败,默认情况下,redis 会停止接受所有的写请求 |
rdbcompression | 对于存储到磁盘中的快照,可以设置是否进行压缩存储 | 如果是的话,redis 会采用 LZF 算法进行压缩。如果你不想消耗 CPU 来进行压缩的话,可以设置为关闭此功能,但是存储在磁盘上的快照会比较大。 |
rdbchecksum | 是否进行数据校验 | 在存储快照后,我们还可以让 redis使用 CRC64 算法来进行数据校验,但是这样做会增加大约 10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能 |
1.8 rdb的触发
-
1 拷贝rdb文件
-
2 flushdb/flushAll 会产生默认的空的dump.rdb
-
3 执行shutdown命令 也会主动的备份数据库