Redis持久化RDB方式介绍

描述

Redis持久化

Redis是一个内存数据库,为了保证数据的持久性,它提供了两种持久化方案:

RDB 方式(默认)

RDB方式是通过快照( snapshotting )完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘。

触发快照的时机
  1. 符合自定义配置的快照规则 redis.conf
  2. 执行 save 或者 bgsave 命令
  3. 执行 flushall 命令
  4. 第一次执行主从复制操作
原理图

数据库

设置快照保存规则

快照规则是配置在 redis.conf 文件中的,我这里我截取对应的代码片段,给大家看下。

#
# Save the DB on disk:
# 
# 持久化操作设置,下面的配置分别表示:900秒内至少一个键被修改则进行快照,5分钟内至少10个键被修改则进行快照,1分钟内10000个键被更改则进行快照

save 900 1
save 300 10
save 60 10000

注意事项:

  1. Redis在进行快照过程中不会修改RDB文件,只有快照结束后才会将旧的快照文件替换为新的,也就是说任何时候RDB文件都是完成的,不存在中间状态,保证了数据的完整性。
  2. 我们可以通过定时备份RDB文件来实现Redis数据库的备份,RDB文件是经过压缩的二进制文件 ,占用空间会小于内存中的数据,更加利于传输。
RDB优缺点

缺点 :使用RDB方式进行持久化,如果看明白了其备份原理图,则很容易看出 Redis如果异常宕机或者重启 ,就会丢失最后一次快照之后的所有数据修改。这个时候我们就需要根据具体的应用场景,通过组合设置自动快照条件的方式来将可能发生的数据损失控制在能够接受范围。如果数据相对来说比较重要,希望将损失降到最小,则可以使用 AOF 方式进行持久化,下面我们会聊到这种方式。

优点: RDB最大化了Redis性能,父进程在保存快照生成RDB文件时唯一要做的就是fork出一个子进程,然后这个子进程就会处理接下来的所有文件保存工作,父进程无需执行任何磁盘 I/O 操作。同时这也是一个缺点,如果数据集比较大的时候,fork可能比较耗时,造成服务器在一段时间内会停止处理客户端请求。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分