四十四、Redis的数据持久化(RDB、AOF)

目录

一、定义

二、RDB

1、默认方案:

2、bgsave方案:

3、bgsave的基本流程:

4、RDB会在什么时候执行?save 60 1000代表什么含义?

5、RDB的缺点:

三、AOF

1、定义:

2、流程:

四、RDB与AOF的对比


一、定义

  • RDB全称Redis Database Backup fileRedis数据备份文件),也被叫做Redis数据快照。
  • 简单来说就是把内存中的所有数据都记录到磁盘中
  • Redis实例故障重启后,从磁盘读取快照文件,恢复数据。
  • 快照文件在称为RDB文件,默认是保存在当前运行目录。

注意:

Redis停机时会执行一次RDB。

二、RDB

1、默认方案:

Redis内部有触发RDB的机制,可以在redis.conf文件中找到,格式如下:

RDB的其它配置也可以在redis.conf文件中设置:

2、bgsave方案:

  • 通过页表的复制,实现数据的共享;
  • 数据副本可以避免脏写的问题;

3、bgsave的基本流程:

  • fork主进程得到一个子进程,共享内存空间。
  • 子进程读取内存数据并写入新的RDB文件。
  • 用新RDB文件替换旧的RDB文件。

4、RDB会在什么时候执行?save 60 1000代表什么含义?

  • 默认是服务停止时。
  • 代表60秒内至少执行1000次修改则触发RDB。

5、RDB的缺点:

  • RDB执行间隔时间长,两次RDB之间写入数据有丢失的风险。
  • fork子进程、压缩、写出RDB文件都比较耗时。

三、AOF

1、定义:

AOF全称为Append Only File(追加文件)。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。

2、流程:

AOF默认是关闭的,需要修改redis.conf配置文件来开启AOF

AOF的命令记录的频率也可以通过redis.conf文件来配:

配置项

刷盘时机

优点

缺点

Always

同步刷盘

可靠性高,几乎不丢数据

性能影响大

everysec

每秒刷盘

性能适中

最多丢失1秒数据

no

操作系统控制

性能最好

可靠性较差,可能丢失大量数据

  • 因为是记录命令,AOF文件会比RDB文件大的多。
  • 而且AOF会记录对同一个key的多次写操作,但只有最后一次写操作才有意义。
  • 通过执行bgrewriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同效果。

四、RDB与AOF的对比

RDB

AOF

持久化方式

定时对整个内存做快照

记录每一次执行的命令

数据完整性

不完整,两次备份之间会丢失

相对完整,取决于刷盘策略

文件大小

会有压缩,文件体积小

记录命令,文件体积很大

宕机恢复速度

很快

数据恢复优先级

低,因为数据完整性不如AOF

高,因为数据完整性更高

系统资源占用

高,大量CPU和内存消耗

低,主要是磁盘IO资源

AOF重写时会占用大量CPU和内存资源

使用场景

可以容忍数分钟的数据丢失,追求更快的启动速度

对数据安全性要求较高常见

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/265854.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++——继承

目录: 继承的概念及定义 面向对象的三个基本特征:封装、继承、多态。在前面的讲解中封装已经用的很多了,那么接下来的两篇文章就来介绍一下继承和多态。 继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&am…

虾皮选品:如何在虾皮平台上进行选品以提高销售额和利润

在虾皮(Shopee)平台上进行选品时,可以遵循以下策略和技巧,以便找到有潜力的产品并提高销售额。 先给大家推荐一款shopee知虾数据运营工具 知虾免费体验地址(复制浏览器打开):d.ddqbt.com/JU5o …

Python开发常用的库汇总,附官网链接

文章目录 前言环境管理包管理包仓库分发构建工具交互式解析器文件日期和时间文本处理特殊文本格式处理自然语言处理文档配置命令行工具下载器图像处理OCR音频Video地理位置HTTP数据库数据库驱动ORMWeb 框架权限CMS电子商务RESTful API验证模板引擎队列搜索动态消息资源管理缓存…

Rust 学习

Rust 官网:https://www.rust-lang.org/zh-CN/ 1、Rust 简介 Rust 是一门注重安全(safety)、速度(speed)和并发(concurrency)的现代系统编程语言。Rust 通过内存安全来实现以上目标,但…

FFmpeg的AVcodecParser

文章目录 结构体操作函数支持的AVCodecParser 这个模块是AVCodec中的子模块,专门用来提前解析码流的元数据,为后面的解码做准备,这一点对cuda-NVdec非常明显,英伟达解码器的元数据解析是放在CPU上的,所以就非常依赖这个…

git提交代码报错Git: husky > pre-commit

目录 git提交代码报错原因解决方法(三种)1、第一种2、第二种3、第三种 git提交代码报错原因 这个问题是因为当你在终端输入git commit -m “XXX”,提交代码的时候,pre-commit(客户端)钩子,它会在Git键入提交信息前运行做代码风格检查。如果代…

Linux下安装MySQL 5.6

1、下载二进制安装文件 使用wget下载MySQL 5.6.35二进制安装文件并存放在/root目录下。 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz ll mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz 2、创建mysql用户 先创建mysql…

微信社群机器人开发

简要描述: 删除朋友圈 请求URL: http://域名地址/deleteSns 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必选类型说明wId…

集合的几个遍历方法

1. 集合的遍历 1.0 创建集合代码 List<String> strList new ArrayList<>(); strList.add("huawei"); strList.add("xiaomi"); strList.add("tencent"); strList.add("google"); strList.add("baidu");1.1 fo…

初识人工智能,一文读懂贝叶斯优化的知识文集(6)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

【C++】异常 -- 详解

一、C 语言传统的处理错误的方式 传统的错误处理机制&#xff1a; 终止程序&#xff0c;如 assert&#xff0c;缺陷&#xff1a;用户难以接受。如发生内存错误&#xff0c;除 0 错误时就会终止程序。 返回错误码&#xff0c;缺陷&#xff1a;需要程序员自己去查找对应的错误。…

leetcode 每日一题

https://leetcode.cn/problems/invert-binary-tree/submissions/ 这个题目我们的思路其实很简单&#xff0c;遇到空就是得返回空指针&#xff0c;因为要进行交换&#xff0c;但是这里有个小细节&#xff0c;就是我们的把他的左右节点进行保存&#xff0c;我们这里函数接口是有返…