前言:

1.线上的redis挂了,丢失的数据怎么办?如何恢复呢?都有哪种恢复方法呢?该如何恢复呢?

   首先线上我们的redis一般都会做redis的数据持久化,以防止redis挂了导致缓存数据不可用的问题.

那我们先来了解一下redis的存储方式 AOF 和 RDB吧

redis的存储快照之RDB

概念:RDB持久化机制,会周期的性的对redis缓存的数据进行持久化,默认每隔5分钟会保存一次RDB快照.

场景如下:  

   开始我们找了路人甲 帅哥乙 和工人丁 一起拍了和照片这就叫快照A吧,但过了5分钟后,王老五找工人丁有事,校花六看上了帅哥乙,有一起拍了张照片快照B.

这时候我们就叫快照A为redis生成的第一分RDB快照,每个人就是redis中的一个key-value 数据,过了一定设置的时间,redis就会去检查,如果符合配置要求,就会在生成一份RDF快照,然后干掉快照A.

那么我们应该如何去配置redis的RDB持久化机制呢?

 我们一般部署了redis,都可以在redis的根目录下看到一个redis的配置文件,redis.conf , 里面有个重要的参数

save 60 1000

针对如上配置解读

save: 就是同步进行快照生成的意思,也可以配置成bgsave进行异步执行快照生成

60 1000 : 意思每隔60s, redis就会去检查,如果超过1000个key发生了变更,那么就生成一个新的dump.rdb文件,这个文件就是RDB快照的文件.

如上配置整体意思就是每过60s就会做一次检查,是否有超过1000个key改变,有就同步生成一个RDB快照.

咦,那RDB持久化的工作流程是?

 

(1)redis根据配置自己尝试去生成rdb快照文件

(2)fork一个子进程出来

(3)让子进程尝试将数据dump到临时的rdb快照文件中

(4)完成rdb快照文件的生成之后,就替换之前的旧的快照文件

 

 

 

 

 

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐