在 redis 的配置文件中找到如下内容:
以 save 60 10000 为例,表示每隔 60s,如果有超过10000 个 key 发生了变更,那么就生成一个新的 dump.rdb 文件,就是当前 redis 内存中完整的数据快照,这个操作也被称之为 snapshotting。
另外,快照也可以手动调用 save 或者 bgsave 命令,同步或异步执行 rdb 快照生成。
save 可以设置多个,就是多个 snapshotting 检查点,每到一个检查点,就会去 check 是否有指定的 key 数量发生了变更,如果有,就生成一个新的 dump.rdb 文件。
场景一:在 redis 中保存几条数据,使用 redis-cli shutdown 命令 关闭 redis 进程,然后重启 redis。
由上图可知,由 redis-cli shutdown 关闭 redis 进程,数据不会丢失。这是因为通过 redis-cli shutdown 这种方式去 redis 进程,其实是一种安全退出的模式,redis 在退出的时候会将内存中的数据立即生成一份完整的 rdb 快照。
场景二:在 redis 中再保存几条新的数据,用 kill -9 粗暴杀死 redis 进程,模拟 redis 故障异常退出,导致内存数据丢失的场景