Redis持久化的两种方式RDB和AOF详解

news2025/4/23 19:32:36

小伙伴们好,欢迎关注,一起学习,无限进步
以下内容为学习 Redis 过程中的笔记

文章目录

    • Redis持久化
      • RDB( Redis DataBase )
        • 触发机制:
        • 如何恢复rbd文件:
        • 优点:
        • 缺点:
      • AOF ( Append Only File )
        • 重写规则:
        • 优点:
        • 缺点:
      • 扩展:

Redis持久化

Redis是内存数据库,如果不能将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器的数据库状态也会消失。所以 Redis 提供了持久化功能。

RDB( Redis DataBase )

什么是RDB:

在这里插入图片描述

在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。

Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的。这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。

我们默认的就是RDB,一般情况下不需要修改这个配置!

有时候在生产环境我们会将这个文件进行备份!

rdb保存的文件是dump.rdb 都是在我们的配置文件中快照中进行配置的!
在这里插入图片描述

触发机制:

1、save的规则满足的情况下,会自动触发rdb规则
2、执行 flushall 命令,也会触发我们的rdb规则!
3、退出redis,也会产生 rdb 文件!
备份就自动生成一个 dump.rdb

如何恢复rbd文件:

1、只需要将rdb文件放在我们redis启动目录就可以,redis启动的时候会自动检查dump.rdb 恢复其中
的数据!
2、查看需要存在的位置

127.0.0.1:6379> config get dir
1) "dir"
2) "/usr/local/java/redis-6.0.9/bin" # 如果在这个目录下存在 dump.rdb 文件,启动就会自动回复其中的数据。

一般 redis 的默认配置就够用了,但是还是有必要学习。

优点:

1、适合大规模的数据回复

2、对数据的完整性要求不高

缺点:

1、需要一定的时间间隔进行操作,如果redis意外宕机,呢么最后一次修改的数据就没有了(也可以自己设置时间)

2、fork进程的时候,会占用一定的内容空间。

AOF ( Append Only File )

将所有的命令都记录下来,history,恢复的时候就把这个文件全部在执行一边。

AOF是什么:

在这里插入图片描述

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

AOF保存的文件是 appendonly.aof

在这里插入图片描述

默认是不开启的,需要我们手动改为 yes ,其他的配置默认可以。

重写规则:

aof 默认是文件的无线追加,文件会越来越大

# 如果 aof 文件大于64m,redis就会 fork 一个新的进程重写文件。	
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

如果这个 aof 文件有错位,这时候 redis 是启动不起来的吗,我们需要修复这个aof文件
redis 给我们提供了一个工具,在bin目录下 redis-check-aof --fix

# 修改 appendonly.aof 文件
redis-check-aof --fix appendonly.aof

如果文件正常,重启就可以直接回复了

优点:

1、每一次修改都同步,文件的完整性会更好

2、每秒同步一次,可能会丢失一秒的数据,设置 appendfsyn

3、从不同步,效率最高

缺点:

1、相对于数据文件来说,aof 远远大于 rdb,修改的速度比 rdb 慢

2、aof 运行效率比 rdb 慢,所以 redis 默认的配置就是rdb持久化

扩展:

1、RDB 持久化方式能够在指定的时间间隔内对你的数据进行快照存储
2、AOF 持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以Redis 协议追加保存每次写的操作到文件末尾,Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大。
3、只做缓存,如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化
4、同时开启两种持久化方式

  • 在这种情况下,当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整。

  • RDB 的数据不实时,同时使用两者时服务器重启也只会找AOF文件,那要不要只使用AOF呢?作者建议不要,因为RDB更适合用于备份数据库(AOF在不断变化不好备份),快速重启,而且不会有AOF可能潜在的Bug,留着作为一个万一的手段。

5、性能建议

  • 因为RDB文件只用作后备用途,建议只在Slave上持久化RDB文件,而且只要15分钟备份一次就够了,只保留 save 900 1 这条规则。

  • 如果Enable AOF ,好处是在最恶劣情况下也只会丢失不超过两秒数据,启动脚本较简单只load自己的AOF文件就可以了,代价一是带来了持续的IO,二是AOF rewrite 的最后将 rewrite 过程中产生的新数据写到新文件造成的阻塞几乎是不可避免的。只要硬盘许可,应该尽量减少AOF rewrite的频率,AOF重写的基础大小默认值64M太小了,可以设到5G以上,默认超过原大小100%大小重写可以改到适当的数值。

  • 如果不Enable AOF ,仅靠 Master-Slave Repllcation 实现高可用性也可以,能省掉一大笔IO,也减少了rewrite时带来的系统波动。代价是如果Master/Slave 同时倒掉,会丢失十几分钟的数据,启动脚本也要比较两个 Master/Slave 中的 RDB文件,载入较新的那个,微博就是这种架构。

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

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

相关文章

搬家了,发现虚拟机链接不上,查找原因,解决了

是网络配置的问题,因为ip地址变动,所以配置文件要进行改动 1.通过cmd查看本地主机ip地址 2.在虚拟网络编辑器中选在vmnet8,用管理员权限修改ip,网关,子网掩码,和物理主机对应 3.在/etc/sysconfig/network…

同局域网共享虚拟机(VMware)

一、前言 首先我们先来了解下 VMware 的三种网络模式桥接模式、NAT模式、仅主机模式,网络类型介绍详情可以参考下我之前的文档 Linux系统虚拟机安装(上)第三章 - 第9步指定网络类型。了解三种网络模式的原理之后,再来剖析下需求&…

【力扣hot100】刷题笔记Day14

前言 又是新的一周,快乐的周一,快乐地刷题,今天把链表搞完再干活! 114. 二叉树展开为链表 - 力扣(LeetCode) 前序遍历 class Solution:def flatten(self, root: Optional[TreeNode]) -> None:if not r…

clickhouse 随心所欲的聚合模型-AggregatingMergeTree

clickhouse 强大的 MergeTree 系列引擎令人信服,其 ReplacingMergeTree、SummingMergeTree 在数据唯一性和汇总场景中表现非凡。但你是否还有保留最小(大)、平均等预聚合需求,甚至在一个模型中既有唯一性语意也有汇总、最小、最大、平均值语意该如何处理…

【Simulink系列】——Simulink与Matlab接口使用命令行进行仿真

声明:本系列博客参考有关专业书籍,截图均为自己实操,仅供交流学习! 一、Simulink与Matlab接口 1、Matlab工作区变量设置模块参数 Matlab工作区的变量可以作为模块的设置参数 2、Matlab工作区变量作为输入信号 使用From Worksp…

深度学习--神经网络基础

神经网络 人工神经网络( Artificial Neural Network , 简写为 ANN )也简称为神经网络( NN ),是一种模仿生物神经网络结构和 功能的计算模型 。人脑可以看做是一个生物神经网络,由众多的 神经元…

FLStudio20.8编曲制作软件中文版下载及功能全面介绍

一、主要功能 FL Studio 20.8,作为一款深受音乐制作人和作曲家喜爱的软件,具备多种核心功能,满足从创作到完成的整个音乐制作流程。 音频录制与编辑:用户可以轻松录制外部音频,如乐器演奏、人声等,并在软…

【新书推荐】8.4 逻辑运算指令

本节内容:逻辑运算指令。8086 CPU逻辑运算指令包括NOT、AND、OR、XOR,除NOT指令外,均有两个操作数。逻辑运算指令影响状态标志位。 ■否操作指令NOT指令格式:NOT OPRD。将OPRD取反,然后送回OPRD。操作数可以是8位/16位…

UE5 UE4 不同关卡使用Sequence动画

参考自:关于Datasmith导入流程 | 虚幻引擎文档 (unrealengine.com) 关卡中的Sequence动画序列,包含特定关卡中的Actor的引用。 将同一个Sequcen动画资源放入其他关卡,Sequence无法在新关卡中找到相同的Actor,导致报错。 Sequen…

2024国际生物发酵展览会独家解读-力诺天晟科技

参展企业介绍 北京力诺天晟科技有限公司,专业致力于智能仪器仪表制造,工业自动控制系统用传感器、变送器的研发、设计、销售和服务。 公司坐落于首都北京行政副中心-通州区,下设生产子公司位于河北香河经济开发区,厂房面积 300…

Vue NextTick工作原理及使用场景

$nextTick的定义及理解: 定义:在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。 所以就衍生出了这个获取更新后的DOM的Vue方法。所以放在Vue.nextTick()回调函数中的执行的应该是会对DOM进行操…

GitHub标星50k的Android全栈技术知识,成为一名合格Android架构师

JNI 简介 JNI (Java Native Interface英文缩写),译为Java本地接口。是Java众多开发技术中的一门技术,意在利用本地代码,为Java程序提供更高效、更灵活的拓展。尽管Java一贯以其良好的跨平台性而著称,但真正…

js 面试运行机制和存储(从以下几方面理解),栈和堆的理解

1 工作原理 每个浏览器都有自己的引擎,通过引擎把代码解析运行起来。 2 生命周期 3-1 内存分配 3-2 内存使用 3-3 内存回收 3 栈和堆的理解 timer也是个函数--所以也是引用类型。 4 如何运行 以下可忽略 首先声明变量,放在左侧栈中执行,在执行…

FPGA-时钟管理单元

时钟管理单元(Clock Management Tile, CMT) : 即时钟管理片,是FPGA器件中一个十分重要的时钟资源。能够对内部和外部的时钟去偏斜、去抖动,同时还支持频率合成、分倍频等功能。 举例,下面这个例子数据从FIFO输出时钟频率为125MHZ,这个时钟频率可以通过…

Redis冲冲冲——Redis的主从复制,哨兵模式以及SpringBoot的配置

目录 引出Redis的主从复制,哨兵模式以及SpringBoot的配置Redis的主从复制Redis的哨兵模式SpringBoot配置 缓存三兄弟:缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 Redis冲冲冲——Redis的主从复制,哨兵模式以及SpringBoot的配置…

Taro React ---- 在函数组件或类组件中访问上下文(Context)中的值

1. 解决问题的场景 项目是开发好几年了,当时采用的是类组件开发。现在新增需求,新增需求使用的函数组件,组件涉及的层级比较多,如果直接组件传值,比较麻烦。但是单独为这次的需求新增 redux 的引入又觉得没必要。然后在…

优化照片分辨率:如何将照片调整为150dpi,以适应不同场景?

在数字化时代,我们经常需要在不同场景中使用照片,如打印、网页发布、社交媒体分享等。然而,不同场景对于照片的分辨率要求各不相同。有时,我们需要将照片的分辨率调整为特定数值,例如150dpi(每英寸点数)。这样做可以确…

flutter面试题及答案,android面试题最新

前言 今天想停下代码,写点脑袋里不断浮现出来的一些看法。 也就是最近在微博和知乎上老看到“互联网寒冬”的说法。要么是看到啥公司薪水无法如期发放了,要么是看到别人说什么“裁员了,没有交接,签字然后电脑还了就走人&#xf…

【JavaEE进阶】 Spring AOP快速上手

文章目录 🍃什么是AOP🌳什么是Spring AOP🌴上手Spring AOP🚩引入依赖🚩编写AOP程序 ⭕总结 🍃什么是AOP AOP是Aspect Oriented Programming的简称(又称为面向切⾯编程) 什么是面向…

【k8s 访问控制--认证与鉴权】

1、身份认证与权限 前面我们在操作k8s的所有请求都是通过https的方式进行请求,通过REST协议操作我们的k8s接口,所以在k8s中有一套认证和鉴权的资源。 Kubenetes中提供了良好的多租户认证管理机制,如RBAC、ServiceAccount还有各种策路等。通…