RDB
内存快照
概念:就是指内存中的数据某一个时刻中的状态记录,它实现一种把某一个时刻的状态记录到文件中,与AOF不同的是,它记录的是数据而并不是操作的命令
快照的使用
Redis 提供了两个命令来生成 RDB 文件,分别是 save 和 bgsave,他们的区别就在于是否在「主线程」里执行
- 执行了 save 命令,就会在主线程生成 RDB 文件,由于和执行操作命令在同一个线程,所以如果写入 RDB 文件的时间太长,会阻塞主线程
- 执行了 bgsava 命令,会创建一个子进程来生成 RDB 文件,这样可以避免主线程的阻塞
- Redis 还可以通过配置文件的选项来实现每隔一段时间自动执行一次 bgsava 命令,默认会提供以下配置
save 900 1
save 300 10
save 60 10000
产生快照的过程
- 全量快照
- 全量快照的改进,再做一次全量快照之后,记录哪些数据已经被修改了,下一次重那些数据开始快照,但是会照成很大的空间消耗
RDB的优缺点
优点
- 因为RDB记录的是数据,所以如果利用RDB来恢复数据的话会被AOF来得快很多
- RDB没有重写,不会造成降低效率
缺点: - 快照的频率不好控制,如果快照的频率过快会导致会产生很大的空间消耗,频率太低又会导致数据的丢失