Redis持久化的两种方式

article/2025/9/22 20:19:31

文章目录

  • 前言
  • 一、Redis持久化机制
  • 二、RDB
  • 三、AOF
  • 总结


前言

Redis是基于内存的缓存机制,假定Redis服务器中途突然出现故障,那内存的数据就会丢失。针对这个问题,Redis提供了两种持久化方式,分别是RDB和AOF。


一、Redis持久化机制

在这里插入图片描述

RDB(Redis DataBase):根据我们自己配置的时间或者手动去执行SAVE命令,Redis就会去生成RDB文件。这是Redis持久化的默认方式。

注意:RDB文件实际上就是一个经过压缩的二进制文件,Redis可以通过这个文件在启动的时候来还原我们的数据。

AOF(Append Only File):把Redis服务器接收到的所有写命令都记录到日志中。

注意:Redis重跑一遍这个记录下的日志文件,就相当于还原了数据。

两种方式的优缺点

RDB
1.RDB在启动的时候恢复数据会比AOF快很多。
2.可能会导致部分数据丢失(中途突然宕机,没有轮询到RDB事件)AOF
1.数据完整性高
2.恢复起来比较慢,需要执行一条条指令。

二、RDB

Redis是单线程,RDB会执行SAVE或BESAVE命令,而生成文件非常耗时,如果只有一个线程处理,那其他的请求如果应对?

解决办法:
虽然Redis是单线程的,定时的RDB实际上就是一个时间事件,Redis发现RDB的事件可执行时,则调用BGSAVE命令,而BGSAVE命令实际上会fork出一个子进程来进行完成持久化(生成RDB文件),在fork的过程中,父进程(主线程)肯定是阻塞的,但fork完之后,是fork出来的子进程去完成持久化。
在这里插入图片描述

总结:Redis在较新的版本中,有些地方都使用了多线程来进行处理,只不过核心的处理命令请求和响应还是单线程,但可以采取其他的办法提高运行的效率,减少阻塞时间。


三、AOF

AOF是在命令执行完之后,把命令写在buffer缓冲区的(直接追加写),可以设置每次操作都记录或者每秒记录一次。Redis会启一个线程去刷盘,也不是用主线程去干的。
在这里插入图片描述

存在问题:
如果这些写入磁盘的命令集合不做任何处理,随着操作的不断增加,该文件就会变得非常大。

解决办法:fork个子进程会对原始命令集合进行重写,相当于压缩,压缩完替换掉原始文件。


总结

官网是不建议仅仅只使用RDB的,如果对数据丢失容忍度是有要求的,建议是开启AOF+RDB一起用。在Redis4.0以后也支持了AOF和RDB混合,具体使用什么样的持久化方式还是要根据业务要求。



http://chatgpt.dhexx.cn/article/oBirA88D.shtml

相关文章

解决Redis持久化数据丢失

为什么持久化? 持久化是Redis保障高可用性的基础。因为Redis是一个内存数据库,它的数据均保存在内存中,如果Redis实例发生宕机,在没有数据备份前提下,你的生产数据将会全部丢失。这时完善的持久化机制,可以…

Redis持久化:RDB和AOF

一、为什么需要持久化? Redis对数据的操作都是基于内存的,当遇到了进程退出、服务器宕机等意外情况,如果没有持久化机制,那么Redis中的数据将会丢失无法恢复。有了持久化机制,Redis在下次重启时可以利用之前持久化的文…

redis混合持久化

RDB (即 Redis Data Base 的缩写)和 AOF (即 Append Only File 的缩写)持久化各有利弊,RDB 可能会导致一定时间内的数据丢失,而 AOF 由于文件较大则会影响 Redis 的启动速度,为了能同时使用 RDB…

Redis持久化存储(详细)

来自知乎:https://zhuanlan.zhihu.com/p/77646963 分享学习 Redis 的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制。…

redis持久化配置及两种方式

持久化 redis持久化是指在指定的时间间隔内将内存中的数据集快照(snapshotting)写入磁盘,恢复时是将快照文件读入内存 redis提供了两种持久化方式 一:RDB内存快照 1:概念 RDB的实现方式为,在指定时间将当前时刻内存中的数据生成一…

redis持久化概念

1、前言 Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持…

redis持久化机制

redis持久化机制 RDB(redis database)触发方式配置文件自动化触发save命令bgsave命令shutdown命令flushall命令主从复制 AOF(append only file)AOF方式的三种写入策略触发方式 混合持久化 redis默认的持久化机制是RDB。 redis是常…

Redis持久化方式

1 RDB RDB(Snapshot 内存快照) 。RDB是默认的持久化方式,按照一定的策略周期性的将内存中的数据生成快照保存到磁盘。 每次快照持久化都是将内存数据完整写入到磁盘一次。并不是增量,如果数据量过大,会引起大量的磁盘IO,影响性能…

Redis持久化面试题

Redis持久化面试题 1.redis中有哪些持久化方式?2.RDB的工作原理3.RDB触发机制4.RDB持久化的缺点5.AOF的工作原理6.开启AOF7.AOF触发机制8.RDB和AOF的优缺点9.RDB和AOF的优先级 1.redis中有哪些持久化方式? ​ redis中的持久化有两种方式,分别…

Redis 持久化

目录 Redis 中的持久化 Redis 的核心架构 IO多路复用线程模型 核心工作单线程模型 Redis持久化介绍 持久化的意义 持久化机制 持久化方式对比 Redis 持久化 - RDB RDB简介 RDB的触发机制 Redis持久化- AOF AOF简介 AOF 的重写机制 AOF的触发机制 AOF重写机制的副…

Redis持久化方案

持久化方式 通常数据库存在三种用于持久操作以防止数据损坏的常见策略: 1.是数据库不关心故障,而是在数据文件损坏后从数据备份或快照中恢复。RDB就是这种情况2.该数据库使用操作日志记录每个操作的操作行为,以在失败后通过日志…

Redis持久化详解

一、概述 在Redis中,实现高可用的技术主要包括持久化、复制、哨兵和集群,下面分别说明它们的作用,以及解决了什么样的问题。 持久化:持久化是最简单的高可用方法(有时甚至不被归为高可用的手段),主要作用是数据备份…

Redis的持久化方式

Redis支持两种方式的持久化,一种是RDB方式、另一种是AOF(append-only-file)方式,两种持久化方式可以单独使用其中一种,也可以将这两种方式结合使用。 •RDB:根据指定的规则“定时”将内存中的数据存储在硬…

Redis持久化详解(简单易懂)

首先先来谈一谈对持久化的理解 持久化(Persistence) 在Redis中的工作原理就是将你存储在缓存中的数据集异步的保存在你的磁盘中实现持久存储 当电脑或者服务器发生宕机时 我们的内存会被清空 但是存储在磁盘中的数据不会丢失 当我们再次打开Redis时 磁盘中的数据集就会再次同步…

Redis持久化

Redis的持久化方式 Redis的持久化有两种方式:RDB和AOF,redis默认采用的是RDB的方式。 RDB 在默认配置中,Redis将内存数据库快照保存在名字为dump.rdb的二进制文件中。 可以配置持久化策略:save N M,让redis在“N秒…

Redis - 持久化有哪几种方式,怎么选?

1、AOF 持久化 Redis是基于内存的,如果Redis服务器挂了,数据就会丢失。为了避免数据丢失了,Redis提供了两种持久化方式,RDB和AOF。我们先来介绍AOF。 AOF(append only file) 持久化,采用日志的…

STM32-Arduino编程 CAN总线通信

STM32-Arduino编程 CAN总线通信 环境说明使用Arduino开发STM32原因直接开始操作 环境说明 开发软件:vscodePlatformIO 操作系统:win10 开发板:STM32F103C8T6 CAN总线通信模块:TJA1050 使用Arduino开发STM32原因 STM32开发比较常…

ESP8266-Arduino编程实例-QRE1113红外反射传感器

QRE1113红外反射传感器 1、QRE1113介绍 QRE1113 具有易于使用的模拟输出,它会根据反射回传感器的红外光量而有所不同。 QRE1113 IR 反射传感器由两部分组成 - 一个 IR 发射 LED 和一个 IR 敏感光电晶体管。 当 VCC 和 GND 引脚通电时,传感器内部的 IR LED 将亮起。 由于深…

ESP8266-Arduino编程实例-MLX90614红外测温传感器驱动

MLX90614红外测温传感器驱动 1、MLX90614传感器介绍 MLX90614 是一款非接触式红外测温仪,测量范围为 -70 至 +380 摄氏度。 MLX90614有以下特性: 体积小,成本低安装在带有两种引脚的分线板上用于 I2C 接口的 10k 上拉电阻,带有可选的焊接跳线在宽温度范围内进行工厂校准…

STM32-Arduino编程 串口通信

STM32-Arduino编程 串口通信 环境说明使用Arduino开发STM32原因直接开始操作 环境说明 开发软件:vscodePlatformIO 操作系统:win10 开发板:STM32F103C8T6 其他硬件:USB转TTL模块(需要安装对应驱动) 使用A…