Redis-redis.conf配置文件中的RDB与AOF持久化方式的详解与区别

news/2024/7/27 8:45:28/文章来源:https://blog.csdn.net/kdzandlbj/article/details/135591678
  1. RDB(Redis Database)
    RDB是Redis的默认持久化方式,它将内存中的数据以二进制格式写入磁盘,形成一个快照
    。RDB持久化有以下几个重要的配置选项:
  • save:指定了保存RDB的策略,默认的配置是每900秒(15分钟)至少有一个键发生变化时保存一次RDB文件。
  • save 900 1:表示在900秒内至少发生1个变化时进行保存。
  • save 300 10:表示在300秒内至少发生10个变化时进行保存。
  • save 60 10000:表示在60秒内至少发生10000个变化时进行保存。
  • dbfilename:指定保存RDB文件的文件名,默认是dump.rdb
  • dir:指定RDB文件保存的目录,默认是Redis服务器所在的目录。
  1. AOF(Append Only File)
    AOF是Redis的另一种持久化方式,它以日志的形式记录每个写操作的命令,通过重新执行这些命令来恢复数据
    。AOF持久化有以下几个重要的配置选项:
  • appendonly:指定是否启用AOF,默认值为no。如果要启用AOF持久化,需要将该选项设置为yes
  • appendfilename:指定保存AOF文件的文件名,默认是appendonly.aof
  • appendfsync:指定AOF文件的同步策略,有以下三个选项:
    • always:每个写操作都立即同步到磁盘。这样能确保数据的完整性,但写入性能较低。
    • everysec:每秒同步一次,Redis默认的配置。在发生故障时可能会丢失1秒的数据。
    • no:完全依赖操作系统来同步,写入性能较高,但可能会丢失多秒的数据。
  • auto-aof-rewrite-percentage:设置AOF文件重写的触发百分比,默认为100。当AOF文件的大小超过了上一次重写时的大小的指定百分比时,Redis会自动触发AOF文件的重写。
  • auto-aof-rewrite-min-size:设置AOF文件重写的最小大小,默认为64MB。当AOF文件的大小超过了这个值时,Redis会自动触发AOF文件的重写。

区别:

  • RDB是以二进制格式持久化整个数据库,而AOF是记录每个写操作的日志
  • RDB文件的恢复速度相对较快,但可能会丢失最后一次持久化后的数据AOF文件的恢复速度相对较慢,但能保证数据的完整性
  • RDB文件的大小一般较小,适用于备份和恢复整个数据库AOF文件的大小一般较大,适用于持久化每个写操作
  • AOF方式更加耗费硬盘空间和IO而RDB方式更加适用于节约空间和提高性能的场景
  • 默认配置下,Redis同时使用RDB和AOF但在恢复的时候会优先使用AOF来进行数据重建

持久化—RDB(Redis Database)

在这里插入图片描述

RDB:Redis Databases

1.什么是RDB

在指定时间间隔后,将内存中的数据集快照写入数据库 ;在恢复时候,直接读取快照文件,进行数据的恢复 ;

在这里插入图片描述

2.工作原理

进行 RDB 的时候,redis 的主线程是不会做 io 操作的主线程会 fork 一个子线程来完成该操作

1.Redis 调用forks。同时拥有父进程和子进程。
2.子进程将数据集写入到一个临时 RDB 文件中。
3.当子进程完成对新 RDB 文件的写入时,Redis 用新 RDB 文件替换原来的 RDB 文件,并删除旧的 RDB 文件。
这种工作方式使得 Redis 可以从写时复制(copy-on-write)机制中获益(因为是使用子进程进行写操作,而父进程依然可以接收来自客户端的请求。)

在这里插入图片描述

①修改配置文件中,有关生成写入rdb文件的说明

在这里插入图片描述

②测试1:先删除rdb文件,再出发rdb文件的创建机制

在这里插入图片描述

保存一下配置文件的修改

在这里插入图片描述

save可以使内存中的数据,立刻持久化,并阻塞其他进程

在这里插入图片描述
重新生成rdb文件

在这里插入图片描述

在这里插入图片描述

③测试2:重启redis,内存中的数据,还在rdb中

在这里插入图片描述

在这里插入图片描述

④测试3:删除rdb文件,flushall后,自动生成rdb文件

在这里插入图片描述

在这里插入图片描述

3.触发机制

  1. save的规则满足的情况下,会自动触发rdb原则
  2. 执行flushall命令,也会触发我们的rdb原则
  3. 退出redis,也会自动产生rdb文件

在这里插入图片描述

在这里插入图片描述

4.save

使用 save 命令,会立刻对当前内存中的数据进行持久化 ,但是会阻塞,也就是不接受其他操作了

由于 save 命令是同步命令,会占用Redis的主进程。若Redis数据非常多时,save命令执行速度会非常慢,阻塞所有客户端的请求。

在这里插入图片描述

5.flushall命令

flushall 命令也会触发持久化

6.触发持久化规则

满足配置条件中的触发条件 ;

可以通过配置文件对 Redis 进行设置, 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时, 自动进行数据集保存操作。

在这里插入图片描述

在这里插入图片描述

7.bgsave

bgsave异步进行进行持久化的时候redis 还可以将继续响应客户端请求

在这里插入图片描述

bgsave和save对比

命令savebgsave
IO类型同步异步
阻塞?是(阻塞发生在fock(),通常非常快)
复杂度O(n)O(n)
优点不会消耗额外的内存不阻塞客户端命令
缺点阻塞客户端命令需要fock子进程,消耗内存

持久化AOF(Append Only File)

在这里插入图片描述

在这里插入图片描述

AOF几乎不使用,但是得理解原理

在这里插入图片描述

1.重启redis,自动生成aof文件

在这里插入图片描述

2.redis-check-aof

redis-check-aof:恢复原来的aof文件,但是会删除错误数据

在这里插入图片描述

破坏aof文件后,连接报错

在这里插入图片描述

修复aof文件:redis-check-aof --fix appendonly.aof

在这里插入图片描述

在这里插入图片描述

正常进入redis

在这里插入图片描述

在这里插入图片描述

3.优缺点

在这里插入图片描述

4.重写规则

在这里插入图片描述

在这里插入图片描述

5.扩展

在这里插入图片描述

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

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

相关文章

域名群站开源系统分享开源域名授权系统

一、需要自己安装PHP和MYSQL服务器环境。 二、务必设置伪静态规则,否则将无法访问文章栏目页面。 三、启用伪静态功能,请在站点设置中选择使用thinkphp的伪静态规则。 四、在域名的根目录下找到”data/config.php”文件,填入数据库的账号和…

使用WAF防御网络上的隐蔽威胁之CSRF攻击

在网络安全领域,除了常见的XSS(跨站脚本)攻击外,CSRF(跨站请求伪造)攻击也是一种常见且危险的威胁。这种攻击利用用户已经验证的身份在没有用户知情的情况下,执行非授权的操作。了解CSRF攻击的机…

无需主网结算来进行 BTC 交易?Tectum 提出了新的解决方案

撰文:Tom,CryptoBooster 下载TechubNews APP,探索Web3的无限可能!掌握最新动态,发现更多相关资讯,与行业领袖共同探索未来趋势。立即下载,开启您的Web3之旅! 区块链发展至今&#x…

解决防爬虫机制方法(二)

最近为了完成学校的大数据的作业,老师要我们爬一个的网站,里面有还算不错的防爬机制,忙活了几天,总结出一些常见的防爬机制的应对方法,方法均来自个人实战总结,非专业爬虫角度分析 承接上一次讲的方法解决…

MybatisPlus-删除

目录 1.数据库建表 2.项目 ---就是更新del_flag字段为2 (1)pom.xml (2)Application (3)applicatiom.yml (4)entity (5)mapper (6)service (7)service目录下的impl目录 (8)common (9)enums (10)config (11)controller postman测试 3.彻底删除数据库记录 (11&…

Shell脚本同时调用#!/bin/bash和#!/usr/bin/expect

如果你想在一个脚本中同时使用bash和expect,你可以将expect部分嵌入到bash脚本中。以下是一个示例: #!/bin/bash# 设置MySQL服务器地址、端口、用户名和密码 MYSQL_HOST"localhost" MYSQL_PORT"3306" MYSQL_USER"your_usernam…

windows 环境下使用脚本备份 oracle 数据库数据

文章目录 前言一、修改点1.设置用户名、密码和要备份的数据库2.创建备份目录3.详情:Bak.bat 文件 二、定时任务自启动bat文件总结 前言 当我们的系统部署在 windows 上时,且使用的数据库为 oracle 时,需要将数据库的数据定时备份。 提示&…

解决Spring Boot跨域问题(配置JAVA类)

什么是跨域问题 跨域问题指的是不同端口之间,使用 ajax 无法相互调用的问题。跨域问题本质是浏览器的一种保护机制,它是为了保证用户的安全,防止恶意网站窃取数据。 比如前端用的端口号为8081,后端用的端口号为8080,后…

在pycharm远程连接树莓派遇到的No files or folders found to process处理办法

在PyCharm中解决"No files or folders found to process"错误的另一个方法是通过Deployment中的Configuration选项。在PyCharm中,找到Tool并选择Deployment,然后点击Configuration。 在设置路径的过程中需要注意目标目录是相对的 在中 会识…

AI大模型预先学习笔记三:使用Assistants API快速搭建领域专属AI助手

文章目录 一、什么是AssistantsAPI二、为什么用AssistantsAPI三、Demo展示及能力介绍四、Demo框架及具体实现五、从Demo到实际应用的Gap 一、什么是AssistantsAPI 介绍 OpenAI的第一手发布者API文档,也就是相当于GPT的API 二、为什么用AssistantsAPI 优点 够全、…

华为数通方向HCIP-DataCom H12-831题库(判断题:1-20)

第01题 为了加快IS-IS网络中链路故障的感知速度,可以将IS-IS与BFD联动 正确 错误 答案:正确 解析: OSPF和IS-IS都可以设置与BFD联动加速链路故障检测 ,使用BFD时,可以实现毫秒级别的链路切换,所以使用IS–IS与BFD联动,可以加快IS–IS的感知速度 第02题 在OSPF中ABR会将…

MySQL表的内连和外连

文章目录 前言一、表的内连接和外连接内连接外连接左外连接右外连接 使用场景 前言 一、表的内连接和外连接 表的连接分为内连接和外连接。 内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在…

推荐几个Github高星GoLang管理系统

在Web开发领域,Go语言(Golang)以其高效、简洁、高并发等特性逐渐成为许多开发者的首选语言。有许多优秀的Go语言Web后台管理系统,这些项目星星众多,提供了丰富的功能和良好的代码质量。本文将介绍一些GitHub高星的GoLa…

工具推荐 |Devv.ai — 最懂程序员的新一代 AI 搜索引擎

介绍 伴随 GPT 的出现,我们可以看到越来越多的 AI 产品,其中也不乏针对程序员做的代码生成工具。 今天介绍的这款产品是一款针对中文开发者的 AI 搜索引擎,Devv.ai 使用 Devv.ai 的使用非常简单,就是传统的搜索场景&#xff…

传感数据分析——傅里叶滤波与小波滤波

传感数据分析——傅里叶滤波与小波滤波 文章目录 传感数据分析——傅里叶滤波与小波滤波前言一、运行环境二、Python实现总结 前言 傅里叶滤波的原理: 傅里叶滤波是基于傅里叶变换的一种信号处理方法,它的原理如下: 傅里叶变换: …

图像处理------亮度

from PIL import Imagedef change_brightness(img: Image, level: float) -> Image:"""按照给定的亮度等级&#xff0c;改变图片的亮度"""def brightness(c: int) -> float:return 128 level (c - 128)if not -255.0 < level < 25…

mysql从入门到放弃之数据库体系结构与管理

文章目录 前言一、体系结构1、mysql c/s结构介绍2、mysql实例组成3、mysqld程序运行原理3.1、mysqld守护进程结构3.2、 引入sql语句结构化的查询语言3.3、探索一条SQL语句的执行过程 二、mysql逻辑存储结构三、mysql物理存储结构3.1、innodb存储引擎的段、区、页之间的关系 四、…

CMU15-445-Spring-2023-Project #3 - Query Execution

前置知识&#xff0c;参考上一篇博客&#xff1a;CMU15-445-Spring-2023-Project #3 - 前置知识&#xff08;lec10-14 Parser&#xff1a;将SQL query转变为ASTBinder&#xff1a;将查询语句与数据库元数据进行绑定&#xff0c;验证查询的正确性和有效性Planner&#xff1a;为…

2024年美赛数学建模思路 - 案例:FPTree-频繁模式树算法

文章目录 算法介绍FP树表示法构建FP树实现代码 建模资料 ## 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模式树算法&#xff0c…

每日一练:LeeCode-144、145、94.二叉树的前中后序遍历【二叉树】

本文是力扣LeeCode-144、145、94.二叉树的前中后序遍历 学习与理解过程&#xff0c;本文仅做学习之用&#xff0c;对本题感兴趣的小伙伴可以出门左拐LeeCode前序遍历、中序遍历、后序遍历。 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序遍历。 给定一个二叉树的根…