一、RDB是什么
Redis一旦断电或者宕机,那么内存数据库中的数据将会全部丢失。
为了解决这个缺点,Redis提供了将内存数据持久化到硬盘,以及用持久化文件来恢复数据库数据的功能。Redis 支持两种形式的持久化,一种是RDB快照(snapshotting),另外一种是AOF。
二、RDB自动配置
在 redis.conf 配置文件中的 SNAPSHOTTING 下,有默认如下的配置。
这里是用来配置触发 Redis的持久化条件,也就是什么时候将内存中的数据保存到硬盘。如果不想使用Redis缓存持久化,那么配置为 save ""
#表示900 秒内如果至少有 1 个 key 的值变化,则保存
save 900 1
#表示300 秒内如果至少有 10 个 key 的值变化,则保存
save 300 10
#表示60 秒内如果至少有 10000 个 key 的值变化,则保存
save 60 10000
三、RDB手动配置
在Redis的客户端中执行bgsave命令。(save命令会阻塞整个Redis服务器,一般不用)
此时会生成一个叫做dump.rdb的文件在客户端的目录下。RDB持久化会把内存中的缓存数据持久化到磁盘上,下次启动的时候,Redis会读取这个dump.rdb文件,达到恢复内存的目的。
四、优缺点
(1)RDB的速度相对AOF持久化速度快一点。
(2)在保存rdb文件的时候,主进程会fork一个子进程,实际去做持久化的是子进程,主进程不会阻塞。
(3)缺点是:RDB不是实时持久化的,如果Redis宕机,可能会丢失最近几分钟内的缓存数据。
刻意练习
(1)Redis的持久化策略有什么?
(2)bgsave与save的区别是什么?
(3)RDB的优点是什么?
(4)RDB的缺点是什么?