一文搞懂Redis持久化

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

前言


Redis持久化,一个老掉牙的问题,但是面试官就是喜欢问。这也是我们学Redis必会的一个知识点。Redis作为内存数据库,它工作时,数据都保存在内存里,这也是它为什么很快的一个原因。但存到内存里肯定是有丢数据的风险,所以Redis是有设计持久化的。Redis持久化分为两种:RDB和AOF。

RDB持久化


RDB(Redis DataBase),是redis默认的存储方式,RDB持久化其实就是将内存的数据直接做了一份快照到磁盘上。触发RDB持久化的方式有:

  • 符合配置的快照保存规则(配置文件里save开头的配置);

  • 执行save或者bgsave命令;

  • 执行flushall命令;

  • 执行主从复制操作 (第一次)。

配置文件redis.conf中,save开头的配置为RDB持久化相关配置。具体解释如下:

  • save "" 表示关闭rdb持久化;

  • save 3600 1 表示每1小时至少有1个key改变,就触发一次持久化可以写多个条件 ;

  • save 3600 1 300 100 60 10000 这里定义了三个策略,它们相互之间为或的关系。

AOF持久化


AOF(Append Only File)持久化,是其将Reids执行过的所有写指令记录下来,保存到日志里,类似MySQL的bin-log。默认配置文件里该持久化方式是关闭的,需要将配置修改为:

appendonly yes

由于AOF是将Redis服务的写操作日志写到日志文件里,当写操作非常频繁时,那么它对磁盘也会造成很大的压力。所以,AOF的磁盘数据落地(fsync函数)也有三个策略:

Always:表示只要有写入就会调用fsync函数;

Everysec:表示每秒调用fsync函数一次;

No:表示不调用fscyn函数,完全跟着系统走;

建议选择everysec,比较保守一些。

AOF重写


AOF文件如果不做干预,它会一直增涨,直到将你的磁盘写满。好在Redis给AOF提供了重写机制。我们可以直接执行如下命令,进行AOF重写:

bgrewriteaof;

执行完该命令后,AOF文件会根据已经持久化的RDB文件和现有AOF文件重新整理,它会把无用的写日志清空,最终达到瘦身目的。

当然,AOF还有一个重写的配置,两个参数:

参数

说明

auto-aof-rewrite-min-size

AOF文件必须要不低于这个尺寸时才会触发重写,后面的每次重写就不会根据这个变量了(根据上一次重写完成之后的大小)。此变量仅初始化启动redis有效

auto-aof-rewrite-percentage

如果该数值定义为80,则表示当AOF文件增长的尺寸超过上次大小(AOF文件上次重写后的大小会被记录下来)百分80时就会触发重写操作

RDB和AOF如何选


在实际生产环境中,根据数据量、应用对数据的安全要求、预算限制等不同情况,会有各种各样的持久化策略。

如,完全不使用任何持久化、使用RDB持久化或AOF持久化的一种,或同时开启快照持久化和AOF持久化等。此外,持久化的选择必须与Redis的主从策略一起考虑,因为主从复制与持久化同样具有数据备份的功能,而且主机Master和从机Slave可以独立的选择持久化方案。

如果Redis中的数据完全丢弃也没有关系(如Redis完全用作DB层数据的cache),那么无论是单机,还是主从架构,都可以不进行任何持久化。

在单机环境下(对于个人开发者,这种情况可能比较常见),如果可以接受十几分钟或更多的数据丢失,选择RDB持久化对Redis的性能更加有利,如果只能接受秒级别的数据丢失,应该选择AOF。

但在多数情况下,我们都会配置主从环境,Slave的存在既可以实现数据的热备,也可以进行读写分离分担Redis读请求,以及在Master宕掉后继续提供服务。在这种情况下,一种可行的做法是:

  • Master:完全关闭持久化,这样可以让Master的性能达到最好;

  • Slave:关闭RDB持久化,开启AOF(如果对数据安全要求不高,开启RDB持久化关闭AOF也可以),并定时对持久化文件进行备份(如备份到其他文件夹,并标记好备份的时间)。然后关闭AOF的自动重写,然后添加定时任务,在每天Redis闲时(如凌晨12点)调用bgrewriteaof。

无法找到来自源 nvlddmkm 的事件 ID 14 的描述 具体错误是: 无法找到来自源 nvlddmkm 的事件 ID 14 的描述。本地计算机上未安装引发此事件的组件,或者安装已损坏。可以安装或修复本地计算机上的组件。 出现这样错误的原因有很多了,有可能是硬件有可能是软件。由于我是刚配置的电脑,起初非常怀疑是自己组装的问题,折腾了好久,心态爆炸!!!先说我报这样错误的情况,以及解决办法,供后面人参考。 ... 阅读详情

相关推荐

别再死磕SPWM了!手把手教你用STM32实现SVPWM驱动PMSM电机(附代码)

本文详细介绍了如何使用STM32实现SVPWM驱动PMSM电机,对比传统SPWM方案,SVPWM在电压利用率、电流THD、转矩脉动和稳态温升等方面均有显著提升。通过克拉克变换优化、扇区快速判断和矢量作用时间补偿等核心算法,结合STM32硬件加速技巧,实现高效电机控制。附代码示例,助力开发者快速掌握SVPWM技术。

weixin_28733777的博客 254

Redis 持久化机制

快照(Snapshot)AOF(Append Only File)只追加日志文件默认开启快照,同时启用两种持久化方式时,优先 AOF

低吟不作语的博客 620

SAP Business Technology Platform 支持的技术栈

SAP Business Technology Platform(简称 BTP)是 SAP 提供的一个综合技术平台,旨在帮助企业实现业务转型和创新。BTP 融合了数据库管理、应用开发、集成、分析和智能技术,为企业提供从基础架构到端到端应用的全面服务。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1534

Redis持久化

redis持久化

weixin_42926863的博客 531

RedisRedis持久化

文章目录Redis持久化RDB(Redis DataBase)内存快照触发时机优缺点AOF(Apended Only File)日志文件AOF回写机制优缺点 Redis持久化 Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘中,那么一旦服务器进程退出,服务器中的数据库状态也就会小时,所以Redis提供了持久化的功能。 RDB(Redis DataBase)内存快照 RDB是Redis默认的持久化方式,内存快照指内存中的数据在某一时刻的状态记录,类似于拍照,将瞬间的形象记录下来。 Redis

Super_Powerbank的博客 369

Redis总结二(持久化

Redis持久化 Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘中,那么一旦服务器进程退出,服务器的数据库状态也就会消失,所以Redis提供了持久化的功能 持久化流程 客户端向服务端发送写操作(数据在客户端的内存中) 数据库服务端收到写请求的数据(数据在服务端的内存中) 服务端调用write这个系统调用,将数据往磁盘上写(数据在系统内存的缓冲区) 操作系统将缓冲区中的数据转移到磁盘控制器上(数据在磁盘缓存中) 磁盘控制器将数据写到磁盘的物理介质中(数据真正落到磁盘上) 以上的过程是在理想条

qq_52840805的博客 292

Redis持久化原理-RDB&AOF

Redis持久化原理-RDB、AOF;主要阐述RDB、AOF的持久化过程;附带Redis无删除数据场景下,如何挽回损失

xiaoyuanbama的博客 2162

一文搞懂Redis持久化策略

fork操作会完全复制一个与当前进程一样的子进程,包括内存数据。这意味着子进程可以访问父进程中的所有数据,从而不会影响父进程的运行过程。fork操作对主进程几乎没有阻塞,但是在开启新进程的时候会参数纳秒级阻塞,忽略不计通俗来说,它是因数据重复录入、共同处理等不规范操作而产生的混乱、无效数据。这些数据不能为企业带来价值,反而会占据存储空间,浪费企业的资源。因此,这些数据被称为“脏”数据,不仅没有价值,还会“污染”其他的数据。为了避免脏数据的产生,fork会采用copy-on-write技术。

wbsdh的博客 1763

一文搞懂redis持久化策略

- RDB 类似于定期保存整个状态的方式,适用于全量备份和恢复。 - AOF 类似于记录每一次写操作的方式,更注重实时性和准确性。

xzz的博客 1976

一文彻底搞懂Redis持久化

Redis持久化是指将Redis服务器中的数据保存到磁盘上,以防止数据在服务器重启时丢失。Redis提供了两种主要的持久化方式:RDB(Redis DataBase)和AOF(Append Only File)。这两种持久化方式可以分别或同时使用,以满足不同的需求和场景。Redis持久化不保证数据的完整性,有可能会丢数据。当Redis用作DB时,DB数据要完整,所以一定要有一个完整的数据源(文件、mysql),在系统启动时,从这个完整的数据源中将数据load到Redis中。

永远在路上 1200

Redis——一文搞懂Redis持久化

Redis——一文搞懂Redis持久化

xdx_dili的博客 295

一文搞懂 Redis持久化机制

Redis 支持的 持久化机制 有三种: - RDB(Redis DataBase)持久化 - AOF(Append Only File)持久化 - RDB-AOF 混合持久化 RDB: - Redis 默认采用的持久化机制 - 以 快照 的形式将进程数据持久化到硬盘中 - 会生成一个经过 压缩 的二进制文件(文件后缀为 .rdb) - 文件内部存储了各个数据库的键值对数据 AOF: - 目前 Redis 持久化 的主流方式(解决了数据持久化的实时性) - 以 独立日志 的方式,记录了每次写入的命令 ...

weixin_51123079的博客 1438

redis 四】一文搞懂redis持久化之RDB

前言: redis持久化分为RDB和AOF,此篇博文着重讲解RDB方式的持久化。演示系统 centos7。 1、官网说明 地址:https://redis.io/topics/persistence 以下内容为有道词典翻译 Redis持久性 RDB持久性按指定的时间间隔执行数据集的时间点快照。 RDB的优势 RDB是Redis数据的非常紧凑的单文件时间点表示。RDB文件非常适合备份。例如,您可能希望在最近的24小时内每小时存档一次RDB文件,并在30天之内每天保存一次RDB快照。这使您可以在灾难情况下轻松还

李光 未来科技 2715

一文搞懂Redis持久化方式RDB&AOF

前言 Redis的性能好的特性很大程度上是由于将所有数据都存储在了内存中,然而当 Redis 重启后,所有存储在内存中的数据就会丢失,在一些情况下,我们希望 Redis 在重启后能保证数据不丢失。我们可以让数据从内存中以某种形式同步到磁盘中,使得重启后可以根据硬盘中的记录恢复数据。这一过程就是持久化Redis支持两种方式的持久化,一种是 RDB ,一种是 AOF,前者会根据指定的规则“定时”将内存中的数据存储在磁盘上,而后者在每次执行命令后将命令本身记录下来,两种持久化方式可以单独使用其中一种,但更多情

沸羊羊_ 2984

一文让你搞懂Redis 持久化

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

qq_36551991的博客 213

一文带你搞懂Redis持久化

Redis的数据是存储在内存的,当程序崩溃或者服务器宕机,那么内存里的数据就会丢失。所以避免数据丢失的情况,需要将数据保存到其他的存储设备中。Redis有哪些机制帮助持久化数据呢?

qq_32792547的博客 271

一文搞懂 Redis 的 RDB、AOF 以及混合持久化机制

Redis ⽀持 RDB 和 AOF 两种持久化机制,Redis 4.0 之后又新增了混合持久化的方式。持久化功能有效地避免因进程退出造成数据丢失问题,当下次重启时利用之前持久化的⽂件即可实现数据恢复。

whf1215847706的专栏 1040

一文搞懂Redis持久化机制

再者就是上述提到的,不管是RDB还是AOF都有丢失数据的风险,比如RDB,在两次bgsave之间Redis宕机了,那就会丢失这个区间的数据,AOF执行一个写命令并且还没来得及持久化Redis就宕机了,那就会丢失这个持久化数据,每秒的化就会丢失1s的数据。Redis是一种基于内存的数据存储系统,如果Redis发生宕机或重启,内存中的数据会被清空,为了避免这种情况,Redis提供了持久化机制,可以将内存中的数据持久化到硬盘上,以保证数据不会丢失。RDB的优点是:快照文件小、回复速度快,适合做备份和灾难恢复。

让~学习~成为一种习惯(橡 皮 人の技术博客) 146

Redis 持久化】核心问题篇(一文搞懂 Redis RDB、AOF 与混合持久化的本质与解决方案)

本文主要讲解 Redis 持久化机制,介绍 RDB、AOF 两种核心方式及混合持久化方案。RDB 通过定时生成二进制快照备份数据,体积小、恢复快但有数据丢失风险;AOF 记录每条写命令,安全性高但文件大、恢复慢。混合持久化结合二者优势,先加载 RDB 快照再补 AOF 命令。还给出场景选择建议,缓存场景选 RDB,核心业务用混合持久化,助力读者依需求保障 Redis 数据安全。

Mr.Ja的博客 1601

一文搞懂 Redis 持久化:把 RDB 和 AOF 想成游戏存档

用游戏存档的生活化类比讲清 Redis RDB 快照、AOF 刷盘与 Rewrite、Redis 7+ 多文件 AOF、混合持久化和恢复选型,并通过隔离在 6393 端口的 redis-cli 实验验证数据丢失与重启恢复。

lvhao123456789的博客 412

Redis持久化核心:一文搞懂RDB与AOF的原理与切换实战

本文针对 Redis 内存数据易丢失的问题,深度解析 RDB 快照式与 AOF 日志式两大核心持久化机制的原理、配置与优劣,结合生产场景给出模式选型、动态切换及混合持久化的实战方案,并提供故障排查与最佳实践,助力开发者掌握 Redis 数据可靠性保障核心技术。

macowl的博客 650

redis 缓存过期默认时间_缓存的必知必会:一文搞懂Redis持久化和过期机制

本文主要介绍了 Redis 持久化的两种机制:RDB 和 AOF,以及键过期的策略:惰性删除和定期删除,还有 RDB、AOF 和复制功能对过期键的处理。RDBRDB 是 Redis 持久化的第一种方式。有两个 Redis 命令可以用于生成 RDB 文件,一个是 SAVE,另一个是 BGSAVE。SAVE 会阻塞 Redis 服务器进程,执行时 Redis 服务器会阻塞所有客户端发送的命令。redi...

weixin_34107887的博客 1428
上一篇: 使用消息队列有什么好处呢
下一篇: Nginx 中常见 header 配置及修改
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值