当前位置: 首页 > news >正文

Redis持久化RDB/AOF



一、RDB

        RDB(Redis DataBase) :RDB 持久性以指定的时间间隔执行数据集的时间点快照,就是把某一刻的数据和状态以文件的形式写到磁盘上。这个快照文件称为RDB文件(dump.rdb)。


自动触发

        Redis7版本,按照redis.conf里配置的save触发,表示在seconds时间内发生changes次变化时触发保存。(执行flushall/flushdb命令也会产生dump.rdb文件,但里面是空的,无意义)

save <seconds> <changes>
save ""    禁用快照

指定快照文件保存位置

指定rdb文件名字

如何恢复:将备份文件,即dump.rdb移动到redis安装目录并启动服务即可


手动触发

        使用save或bgsave命令。

        但save命令会阻塞当前redis服务器直到持久化工作完成 ,不建议使用。

        bgsave命令Redis会在后台异步进行快照操作,不阻塞快照同时还可以响应客户端请求,该触发方式会fork一个子进程由子进程复制持久化过程。

 

lastsave用于查看上一次快照时间戳。

注意:产生的rdb备份最好与服务分机隔离,否则在redis清空数据库或关机时会产生一个rdb文件覆盖原来的备份文件 。

redis-check-rdb dump.rdb    用于检查修复 dump.rdb 


redis.conf 文件 SNAPSHOTTING 模块主要配置参数

save <seconds> <changes>自动触发备份
dbfilename备份rdb文件名
dir备份文件保存位置
stop-writes-on-bgsave-error默认yes,如果配置成no,表示你不在乎数据不一致或者有其他的手段发现和控制这种不一致,那么在快照写入失败时,也能确保redis继续接受新的写请求。
rdbccompression默认yes,对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能。
rdbchecksum默认yes,在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能。
rdb-del-sync-files在没有持久性的情况下删除复制中使用的RDB文件。默认情况下no,此选项是禁用的。


二、AOF

        AOF(Append Only File):以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启后就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。

        默认情况下,redis没有开启AOF,开启需设置配置 appendonly yes,保存文件为appendonly.aof


AOF工作流程

三种写回策略

  • always:同步写回,每个写命令执行完立刻同步地将日志写回磁盘
  • everysec:每秒写回,每个写命令执行完,只是先把日志写到AOF文件的内存缓冲区,每隔一秒把缓冲区中的内容写入磁盘
  • no:操作系统控制的写回,每个写命令执行完,只是先把日志写到AOF文件的内存缓冲区,由操作系统决定何时将缓冲区内容写回磁盘

AOF重写

        当AOF文件的大小超过所设定的峰值时,Redis就会自动启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集,或者可以手动使用 bgrewriteaof 命令。

该配置表示当前aof文件大小达到64mb,且相比于上一次重写aof大小增长了一倍,触发重写。 


MP-AOF

        Redis6之前只保存一个aof文件。Redis7之后采用MP-AOF(Multi Part AOF),将原来的单个AOF文件拆成多个AOF文件,有三种类型,分别为:

  • BASE:表示基础AOF,它一般由子进程通过重写产生,该文件最多只有一个
  • INCR:表示增量AOF,它一般会在AOFRW(AOF重写)开始执行时被创建,该文件可能存在多个
  • HISTORY:表示历史AOF,它由BASE和INCR AOF变化而来,每次AOFRW成功完成时,本次AOFRW之前对应的BASE和INCR AOF都将变为HISTORY,HISTORY类型的AOF会被Redis自动删除

        为了管理这些AOF文件,引入一个manifest(清单)文件来跟踪、管理这些AOF。同时,为了便于AOF备份和拷贝,将所有的AOF文件和manifest文件放入一个单独的文件目录中,目录名由appenddirname配置决定(文件路径为前文rdb配置的 dir + appenddirname) 。



三、RDB-AOF混合持久化

        混合开启方式,将 aof-use-rdb-preamble 的值设置为yes。

        RDB和AOF同时开启时,重启时只会加载aof文件,不会加载RDB文件。

        RDB+AOF的混合方式---------> RDB镜像做全量持久化,AOF做增量持久化

        先使用RDB进行快照存储,然后使用AOF持久化记录所有的写操作,当重写策略满足或手动触发重写的时候,将最新的数据存储为新的RDB记录。这样的话,重启服务的时候会从RDB和AOF两部分恢复数据,既保证了数据完整性,又提高了恢复数据的性能。简单来说:混合持久化方式产生的文件一部分是RDB格式,一部分是AOF格式。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • linux和docker部署基本的命令掌握
  • 全国产化服务器:飞腾FT2000+/64核密集计算、显控及存储一体式加固服务器
  • 《Web项目跨域请求后端Api设置Cookie失败问题?》
  • 前端如何快速切换node版本:nvm
  • 1.反爬虫机制
  • 一、Java入门知识与基本使用
  • 常见面试问题(Python)
  • Java核心API——Collection集合的工具类Collections
  • 解决Jasper Studio报表工具中预览正常显示,但部署到服务器上面无法正常显示的问题
  • linux neo4j 切换知识图谱
  • 粘包,Telnet,SSH,Wireshark
  • 基于Java和GeoTools的Shapefile矢量数据缩略图生成实践
  • STM32——GPS模块(GY-NEO-6M)
  • python使用ffmpeg将视频、音频合并合成(速度最快)
  • 最短路总结(dijkstra,floyd,bellman,spfa)
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 5、React组件事件详解
  • canvas绘制圆角头像
  • css属性的继承、初识值、计算值、当前值、应用值
  • ECMAScript6(0):ES6简明参考手册
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Iterator 和 for...of 循环
  • ReactNative开发常用的三方模块
  • vuex 学习笔记 01
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 初识 webpack
  • 从零搭建Koa2 Server
  • 猴子数据域名防封接口降低小说被封的风险
  • 码农张的Bug人生 - 见面之礼
  • 前端技术周刊 2019-02-11 Serverless
  • 前端临床手札——文件上传
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前端面试之闭包
  • 使用权重正则化较少模型过拟合
  • 微信小程序实战练习(仿五洲到家微信版)
  • 写代码的正确姿势
  • 赢得Docker挑战最佳实践
  • 正则表达式
  • ​力扣解法汇总946-验证栈序列
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #pragma once
  • $NOIp2018$劝退记
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (7) cmake 编译C++程序(二)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (pojstep1.3.1)1017(构造法模拟)
  • (安卓)跳转应用市场APP详情页的方式
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (转)视频码率,帧率和分辨率的联系与区别
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • ./configure,make,make install的作用(转)
  • .Mobi域名介绍
  • .net 7 上传文件踩坑