赞
踩
面试和工作,持久化都是重点
Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失,所以Redis提供持久化功能。
先看如下流程图
RDB
在指定的时间间隔内,将内存中的数据快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。
Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件,整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF更加的搞高效。RDB的缺点就是最后一次持久化后的数据可能丢失。我们默认的就是RDB,一般情况下不需要修改这个配置。
RDB保存的文件是dump.rdb
触发机制
1.save的规则满足的情况下,会自动触发rdb规则
2.执行flushall,也会触发rdb的规则
3.退出redis,也会生成一个dump.rdb
如何恢复rdb文件
1.只需将rdb文件放到我们redis的启动目录下就可以,redis启动的时候会自动检查dump.rdb恢复其中的数据
2.几乎他自己默认的配置就够用了,但是我们还是要去学习
优点:
1.适合大规模的数据恢复
2.对数据完整性要求不高
缺点:
1.需要一定的时间间隔进行操作,如果redis意外宕机了,这个最后一次修改的数据就没有了。
2.fork进程的时候,会占用一定的内存空间。
所以有时候我们在生产环境会对这个dump.rdb文件进行备份。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。