为了避免进程退出而造成的数据丢失问题,Redis提供了两种持久化的机制,分别的RDB和AOF。当Redis由于异常退出而重启时,可以利用异常发生之前的持久化文件实现数据恢复。
一、RDB持久化
RDB持久化是把当前进程的数据生成快照,并且把该快照保存到磁盘中的过程。既可以通过命令手动触发RDB的持久化,也可以通过设置规则自动触发RDB的持久化。
可以通过下面命令查看其默认存放路径和文件名
config get dir
config get dbfilename
- 手动触发
通过redis-cli向redis-server发送save或者bgsave命令
![c2bcde932500b461157085134c571392.png](https://img-blog.csdnimg.cn/img_convert/c2bcde932500b461157085134c571392.png)
执行save命令时,日志如下:
![96e1f401ca593d046cbae9bdf966c6e8.png](https://img-blog.csdnimg.cn/img_convert/96e1f401ca593d046cbae9bdf966c6e8.png)
执行bgsave命令时,我们可以看到下面的日志日志:
![a43ec987c1aa6dcec00e3fd4d5fd7e26.png](https://img-blog.csdnimg.cn/img_convert/a43ec987c1aa6dcec00e3fd4d5fd7e26.png)
- 自动触发
1、
通过设置save属性,在x秒内发生y次更新,则自动执行一次bgsave命令,该设置可以在redis-cli中通过下面命令查看:
config get save
![c7d1e2b0a6caf78ab7d19b1162246ee2.png](https://img-blog.csdnimg.cn/img_convert/c7d1e2b0a6caf78ab7d19b1162246ee2.png)
另外可以同时设置多组规则,只要有其中一组满足即会触发RDB持久化,每两个数组为一组规则
m n 表示m秒内进行了n次更新 则自动执行一次bgsave
RDB持久化之后,存储路径由dir配置项指定,文件名由dbfilename配置项指定,在redis-cli中执行下面命令即可查看当前配置:
config get dir
config get dbfilename
![47ec797796779bf8e0b036cb0e206761.png](https://img-blog.csdnimg.cn/img_convert/47ec797796779bf8e0b036cb0e206761.png)
2、
当从节点执行全量复制时,会触发主节点自动执行bgsave命令。先在slave中执行
slaveof no one
会将当前slave与原master失联并且不再是只读模式,可以在master中看到如下日志