配置持久化
redis的持久化的方式有两种
1. 使用rdb快照的方法进行吃就好
2. 使用aof 日志追加的方式进行持久化
使用rdb快照的方法进行持久化
什么是快照:
快照: 是照内存的 , 直接内存中的数据 进行快照, 数据格式照搬过来, 直接放到磁盘上
可以理解成就是直接创建了一个内存镜像, 直接写入到了硬盘. 下次断点直接把这个镜像 放回到内存中就完成了 恢复了, 恢复的速度比较快
rdb方式的持久化是通过快照完成的,当符合一定条件时redis会自动将内存中的所有数据执行快照操作并存储到硬盘上。默认存储在dump.rdb文件中。(文件名在配置文件中dbfilename)
Redis自动实现快照的过程
- redis使用fork函数复制一份当前进程的副本(子进程)
- 父进程继续接收并处理客户端发来的命令,而子进程开始将内存中的数据写入硬盘中的临时文件
- 当子进程写入完所有数据后会用该临时文件替换旧的RDB文件,至此,一次快照操作完成。
注意:
redis在进行快照的过程中不会修改RDB文件,只有快照结束后才会将旧的文件替换成新的,也就是说任何时候RDB文件都是完整的.这就使得我们可以通过定时备份RDB文件来实现redis数据库的备份
RDB文件是经过压缩的二进制文件,占用的空间会小于内存中的数据,更加利于传输。
手动执行save或者bgsave命令让redis执行快照。
两个命令的区别在于,
save是由主进程进行快照操作,会阻塞其它请求。b
bgsave是由redis执行fork函数复制出一个子进程来进行快照操作。
rbd 快照的配置选项: