redis中的RDB持久化详解

1. 如何在redis中配置RDB持久化文件

 在redis持久化中  默认是开启RDB模式的。这里我们只需要对RDB进行配置即可

在上面有三个配置选项 分别是    

每隔900秒  有一条key进行变更

每个300秒 有10条key进行变更

没隔60秒  有10000条key进行变更。

以上任意条达成条件后,就会重新生成一个dump.rdb文件。就是当前redis内存中完整的快照,这个操作也被称之为snapshotting,快照也可以手动调用save或者bgsave命令,同步或异步执行rdb快照生成

save可以设置为多个,也就是多个snapshotting检查点,每到一个检查点,就会去check一下,检查是否有指定数量的key发生了变更,如果有那么就会生成一个新的dump.rdb文件。

2. RDB持久化是的工作流程

  (1).redis会根据自己的配置去尝试rdb快照文件。

  (2) fork出一个子进程

  (3)子进程会将当前的dump文件快照到 rdb临时文件当中。

  (4)完成rdb快照文件的生成之后,那么就会替换以前的老快照。

3、基于RDB持久化机制的数据恢复实验数据还在,为什么?

我们在redis中存入几条数据

在使用redis-cli SHUTDOWN  停掉redis 

这个时候我们进入到存放快照的目录进行查看。

可以看到数据依旧是存在的。

带出来一个知识点,通过redis-cli SHUTDOWN这种方式去停掉redis,其实是一种安全退出的模式,redis在退出的时候会将内存中的数据立即生成一份完整的rdb快照

/var/redis/6379/dump.rdb


(2)在redis中再保存几条新的数据,用kill -9粗暴杀死redis进程,模拟redis故障异常退出,导致内存数据丢失的场景这次就发现,redis进程异常被杀掉,数据没有进dump文件,几条最新的数据就丢失了

 

使用 kill -9 的方式杀掉redis进程。

在进入到存放快照的文件目录查看快照文件  并没有进行生成。

(3) 我们这里在做一个实验,重新对conf文件进行配置,配置成每五秒进行一次快照,在进行一次实验

设置成 没五秒有1个key进行变更那么就会生成新的dump.db文件

使用kill杀死进程过后  我们可以看到快照文件是生成了的

猜你喜欢

转载自www.cnblogs.com/malike/p/10441145.html