Redis持久化RDB/AOF

news2024/11/15 8:06:36



一、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格式。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jira使用指南(高级搜索JQL/统计/面板设计)

1.Jira使用指南 Jira使用指南.pdf 上面的pdf比较详细的介绍了Jira的使用&#xff0c;目录如下&#xff1a; 或者从Jira的中文官网获得更多的使用指南 JIRA入门教程 1.1JIRA如何根据过滤出我关注的单子 https://www.cnblogs.com/wzxbro/p/17203914.html 登录JIRA平台&#…

利用子域的System权限通往父域

前言 最近翻阅笔记发现一篇文章提到通过子域的System权限可以突破获取到父域权限&#xff0c;本文将对此技术进行尝试复现研究。 利用分析 环境信息&#xff1a; 子域&#xff1a;187、sub.cs.org 父域&#xff1a;197、cs.org首先通过在子域的域控机器上打开mmc.exe->连…

Git 版本控制操作

1. 版本回退 Git 能够管理⽂件的历史版本&#xff0c;这是版本控制器重要的能⼒。如果有⼀天你发现之前前的⼯作做的出现了很⼤的问题&#xff0c;需要在某个特定的历史版本重新开始&#xff0c;这个时候&#xff0c;就需要版本回退的功能了。 执⾏ git reset 命令⽤于回退版…

Radiance Field Learners As UAV First-Person Viewers 翻译

作为无人机第一人称视角的辐射场学习者 引言。第一人称视角&#xff08;FPV&#xff09;在无人机飞行轨迹的革新方面具有巨大的潜力&#xff0c;为复杂建筑结构的导航提供了一条令人振奋的途径。然而&#xff0c;传统的神经辐射场&#xff08;NeRF&#xff09;方法面临着诸如每…

Python 爬虫入门(十二):正则表达式「详细介绍」

Python 爬虫入门&#xff08;十二&#xff09;&#xff1a;正则表达式 前言一、正则表达式的用途二、正则表达式的基本组成元素2.1 特殊字符2.2 量词2.3 位置锚点2.4 断言2.5 字符集2.6 字符类2.6.1 基本字符类2.6.2 常见字符类简写2.6.3 POSIX字符类2.6.4 组合使用 三、 正则表…

用Python移除PowerPoint演示文稿中的所有超链接

在某些PPT使用场景中&#xff0c;比如需要打印幻灯片或者超链接已失效时&#xff0c;演示文稿中的超链接可能会成为一种干扰。这时我们需要移除PowerPoint演示文稿中的超链接&#xff0c;以确保演示的连贯性和专业性。通过使用Python&#xff0c;我们可以高效地批量处理这一任务…

Java | Leetcode Java题解之第365题水壶问题

题目&#xff1a; 题解&#xff1a; class Solution {public boolean canMeasureWater(int x, int y, int z) {if (x y < z) {return false;}if (x 0 || y 0) {return z 0 || x y z;}return z % gcd(x, y) 0;}public int gcd(int x, int y) {int remainder x % y;w…

提升录制效率,这些录屏软件快捷键你不可不知

我们工作、学习及娱乐中不可或缺的工具有很多&#xff0c;别的不知道肯定有录屏工具的一席之地吧。如果平常频繁的使用这个工具想要它更高效那不妨试试使用录屏快捷键&#xff0c;这次我们来讨论下大家都在用的那些录屏工具吧。 1.福昕录屏大师 链接&#xff1a;www.foxitsof…

案例分享—国外简洁UI设计界面赏析

简洁的页面遵循“少即是多”的设计哲学&#xff0c;强调通过精简元素、色彩和布局来突出核心功能&#xff0c;使设计作品更加直观易用&#xff0c;提升用户体验&#xff1b; 深受现代主义与极简主义思潮影响&#xff0c;这些流派鼓励去除冗余&#xff0c;追求形式与功能的完美结…

Stable Diffusion 与 DALL·E3 的深度解析

一、Stable Diffusion 的全方位解读 Stable Diffusion 是一款令人瞩目的 AI 绘画工具&#xff0c;其显著特点之一便是开源免费。这意味着用户无需支付费用即可自由使用和修改&#xff0c;为广大创作者提供了极大的便利。然而&#xff0c;要想充分发挥其功能&#xff0c;对电脑…

鸿蒙Harmony编程开发:HTTPS服务端证书四种校验方式

如果你还是使用HttpRequest的话&#xff0c;答案是否定的。但是&#xff0c;鸿蒙开发者很贴心的推出了远场通信服务&#xff0c;可以使用rcp模块的方法发起请求&#xff0c;并且在请求时指定服务端证书的验证方式&#xff0c;关键点就在SecurityConfiguration接口上&#xff0c…

K8S故障排查可视化指南 —— 筑梦之路

在线查看 中文版&#xff1a;http://114.132.181.71:8080/book/71 英文版&#xff1a;http://114.132.181.71:8080/book/70 A visual guide on troubleshooting Kubernetes deployments

Python二级(易错点讲解)

今天在做真题时&#xff0c;遇到了不少坑的地方&#xff0c;跟大家一起分享&#xff0c;感谢大家观看和关注。 祝大家都能在20多天后顺利通过Python二级。 一.continue循环 大家都知道continue关键字在编程中用于跳过当前循环的剩余迭代并直接开始下一次迭代。 好&#xff0c;…

怎么整合spring security和JWT

什么是spring security spring security是一个安全框架,它里面有过滤器链,可以多次过滤,其实他可以给前端的cookie传入一个jsessionid,都可以不使用jwt也能完成校验 第一步:导入依赖 <!-- springboot security --> <dependency><groupId>org.springframew…

整合Spring和Mybatis(在整合DBCP基础上修改)

整合DBCP请参考主页文章spring整合DBCP 前期准备工作 删除dao层的实现类&#xff0c;只留下接口即可。 在resource文件夹下导入dao层对应的xml文件以及mybatis的核心配置文件&#xff0c;配置文件中只写加载映射文件的代码即可&#xff0c;如下所示 <?xml version"…

Kakfa的核心概念-Replica副本(kafka创建topic并指定分区和副本的两种方式)

Kakfa的核心概念-Replica副本&#xff08;kafka创建topic并指定分区和副本的两种方式&#xff09; 1、kafka命令行脚本创建topic并指定分区和副本2、springboot集成kafka创建topic并指定分区和副本2.1、springboot集成kafka2.1.1、springboot集成kafka创建topic并指定5个分区和…

java BIO NIO AIO

结合JavaGuideIO部分内容食用更佳 在Java中&#xff0c;I/O&#xff08;输入/输出&#xff09;操作主要有三种模型&#xff1a;BIO&#xff08;Blocking I/O&#xff0c;阻塞I/O&#xff09;、NIO&#xff08;Non-blocking I/O&#xff0c;非阻塞I/O&#xff09;和AIO&#x…

怎样写好提示词(Prompt) 一

提示工程是一门新兴的学科&#xff0c;专注于以最佳实践构建LLM的最佳输入&#xff0c;从而尽可能以程序化方式生成目标输出。AI工程师必须知道如何与AI进行交互&#xff0c;以获取可用于应用程序的有利结果。此外&#xff0c;AI工程师还必须知道如何正确提问和编写高质量的提示…

python小游戏——躲避球(可当课设)

游戏简介&#xff1a; 没有美术&#xff0c;画面简洁&#xff08;懒得做&#xff09;。玩家控制小球躲避敌人&#xff08;上下左右&#xff0c;闪避&#xff09;&#xff0c;敌人体积越大速度越慢&#xff0c;随机生成道具球&#xff08;目前只有生命球&#xff09;&#xff0…

第T9周:猫狗识别2

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营]) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊](K同学啊)** 一、前期工作 1. 设置GPU import tensorflow as tfgpus tf.config.list_physical_devices("GPU")if gpus:t…