在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
对于Java进阶的学习者来说,Redis备份方式是需要弄清楚的重点之一。Redis备份方式即RDB和AOF两种。本文就围绕着RDB和AOF进行阐述,主要分成redis持久化的两种方式、数据恢复和RDB和AOF对比总结三大部分,感兴趣的同学就继续看下去吧!
一、redis持久化的两种方式:
RDB: 对内存中数据库状态进行快照
AOF: 把每条写命令都写入文件
RDB方式:将redis在内存中的数据库状态保存到磁盘里面,RDB文件是一个经过压缩的二进制文件,通过该文件可以还原生成RDB文件的数据状态。
RDB的生成方式:
指向命令手动生成
通过配置自动生成
1.指向命令手动生成
有两个redis命令可以生成RDB文件,一个是SAVE,另一个是BGSAVE,SAVE命令会阻塞redis服务器进程,直到RDB文件创建完毕为止,在服务器阻塞期间,服务器不能处理任何的进程,BGSAVE会派出一个子进程,然后由子进程负责创建RDB。文件,服务器进程(父进程)继续处理命令请求,创建RDB文件结束之前,客户端发送的 BGSAVE 和 SAVE 命令会被服务器拒绝。
2.通过配置自动生成?
可以设置服务器配置的save选项,让服务器每隔一段时间自动执行一次BGSAVE命令,可以通过save选项设置多个保存条件,但只要其中任意一个条件被满足就会执行BGSAGE命令。
例如:
save 900 1
save 300 10
save 60 10000
那么只要满足以下三个条件中的其中一个,BGSAVE命令就会被执行
服务器在 900 秒之内,对数据库进行了 1 次修改
服务器在 300 秒之内,对数据库进行了 10 次修改
服务器在 60 秒之内,对数据库进行了 10000 次修改
AOF方式:是通过保存redis服务器所执行的写命令来记录数据库状态的AOF文件刷新方式,有三种:
1.appendfsync always -- 每提交一个修改命令都调用fsync到AOF文件,非常慢,但是很安全;
2.appendfsync everysec -- 每秒都调用fsyns刷新到AOF文件,很快但可能丢失一秒内的数据;
3.appendfsync no -- 依靠OS进行刷新,redis不主动刷新AOF,这样最快但是安全性差;
默认并且推荐每秒刷新,这样在速度和安全上都做到了兼顾
二、数据恢复
1.ROB方式
ROB文件的载入工作是在服务器启动时自动执行的,没有专门用于载入ROB文件命令,只要redis服务器再启动时检测到
ROB文件存在,它就会自动载入ROB的文件,在服务器载入的期间,会一直处于阻塞状态,直到载入工作完成为止
2.AOF方式
服务器在启动时,通过载入和执行AOF文件中保存的命令来还原服务器关闭之前的数据,具体过程:
载入AOF文件
创建模拟客户端
从AOF文件中读取一条命令
使用模拟客户端执行命令
循环读取并执行命令,直到全部完成
如果同时启动了AOF和ROB方式,AOF优先,启动时只加载AOF文件恢复数据
三、RDB和AOF对比总结
1、RDB
是在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。 这里说的这个执行数据写入到临时文件的时间点是可以通过配置来自己确定的,通过配置redis在n秒内如果超过m个key被修改这执行一次RDB操作。这个操作就类似于在这个时间点来保存一次Redis的所有数据,一次快照数据。所有这个持久化方法也通常叫做snapshots。
2、AOF
Append-only file,将“操作 + 数据”以格式化指令的方式追加到操作日志文件的尾部,在append操作返回后(已经写入到文件或者即将写入),才进行实际的数据变更,“日志文件”保存了历史所有的操作过程;当server需要数据恢复时,可以直接replay此日志文件,即可还原所有的操作过程。AOF相对可靠,它和mysql中bin.log、apache.log、zookeeper中txn-log简直异曲同工。AOF文件内容是字符串,非常容易阅读和解析。
3、两种备份方案的选择:
对于RDB持久化,
一方面是bgsave在进行fork操作时redis主进程会阻塞,
另一方面,子进程向硬盘写数据也会带来IO压力,但数据的完整性和一致性受备份条件影响可能较差;而AOF持久化由于持续的写入IO压力更大,但数据的一致性和完整性较好。
以上就是Redis备份方式RDB和AOF的总结。大家Java进阶学习的时候如果遇到许多问题,可以报博学谷的线上课程,不仅有优质的课程视频,还有专业老师为大家在线解答。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
浅析Java并发工具类在AQS实现
众所周知,AQS是一个Java提高的底层同步工具类。本文就AQS的资源共享方式,state的作用,自定义同步器的方法,CountDownLatch,Semaphore,Semaphore和RateLimiter的区别,CyclicBarrier几方面来为大家浅析Java并发工具类。
7120
2019-08-05 20:07:43
Java课程设计贪吃蛇讲解
Java课程设计是必不可少的一个重要学习环节,Java程序设计的目的就是加深Java学习者对Java理论基础内容的理解和掌握。今天我们要讲的Java课程设计就是贪吃蛇的小程序设计,以下是具体讲解:
5913
2019-08-30 19:22:50
Java在线培训班哪个靠谱?学完好找工作吗?
Java在线培训班哪个靠谱?学完好找工作吗?提起IT在线培训,就不得不提到知名在线教育品牌博学谷,想学Java的同学可以考虑一下博学谷的Java就业班课程。该课程内容包括了从Java零基础入门到精通的所以核心知识点,由入门案例到详细工作原理及特性的解析,循序渐进,逐步深入。相信学完该课程对学员来说,找工作一定不是问题。
5253
2019-09-15 16:12:58
怎样从0开始学好Java开发?
许多想要从事IT技术工作的朋友,在一开始都会把Java作为入门编程的首选语言。的确,Java作为久盛不衰的流行语言,一直一以来都备受程序开发者的青睐。那么,怎样从0开始学好Java开发呢?这里本文将推荐给大家免费的零基础入门Java开发的在线课程,一起来看看相关课程的介绍吧!
3887
2020-07-15 17:10:31
Java培训班找不到工作为什么?
Java培训班找不到工作主要分析两个方面,先看选择的Java培训机构是否靠谱所学的内容是不是企业需要的,然后分析自身原因,你是否掌握了与职位相匹配的技能也就是自身掌握的Java开发技能是否过硬。面试写求职简历要突出自己的两点,简历有条理,写出自己的做过的项目,简历越详细越好。
4387
2020-08-06 11:24:31