Redis 第五集持久化方案RDB与AOF(Redis)

Redis 持久化 AOF 与 RDB 的区别 ‌全称‌:‌R‌edis ‌D‌ata‌b‌ase(Redis 数据库快照)RDB 通过生成内存数据的二进制快照文件(默认文件名dump.rdb),将某一时刻的完整数据库状态持久化到磁盘‌。‌触发方式‌:SAVE(阻塞主线程)或BGSAVE(后台子进程异步生成)。自动触发:通过配置规则(例如save 900 1表示 900 秒内至少 1 次修改触发快照)‌。‌全称‌:‌A‌ppend-‌O‌nly ‌F‌ile(仅追加文件日志)AOF 记录所有写操作命令(如SETHSET。 阅读详情

说明:

  1. 在windows中,redis3.x版本后不再提供技术支持,那么高版本的特性只好linux中玩。
  2. 本项目演示Redis持久化方案:RDB和AOF。
  3. 环境:Linux + Redis5.0.0

若有出入,欢迎指证,谢谢。参考资料:《Redis实战》

----------------------------------------------内容结构图---------------------------------------------

在这里插入图片描述

----------------------------linux中redis入门-----------------------------
一、Linux环境中Redis入门(@author:拈花为何不一笑)

官网上都有手把手的教你如何安装和简单使用Redis,如下:

 Download, extract and compile Redis with:

		$ wget http://download.redis.io/releases/redis-5.0.0.tar.gz #从官网下载redis
		$ tar xzf redis-5.0.0.tar.gz					#解压
		$ cd redis-5.0.0				#进入解压的目录
		$ make							#编译

		The binaries that are now compiled are available in the src directory. Run Redis with:

		$ src/redis-server  #使用默认配置redis.conf启动服务器(不要直接启动,先设置成后台里程)
		
					#设置成后台进程:设置配置文件redis.conf中daemonize为yes
							
		$ src/redis-server redis.conf								

		You can interact with Redis using the built-in client:

		$ src/redis-cli	#开启一个客户端连接Redis服务器,由于服务器使用的是默认的配置启动,
						#所以不需要指定端口和密码
		redis> set foo bar	#设置一个数据到Redis服务器,键名为foo,值为bar
		OK
		redis> get foo		#从Redis服务器中获取key为foo的数据
		"bar"

笔者Redis安装目录/usr/local/src/redis-5.0.0,安装成功后的界面,如下:
(友情提示:Linux环境下不要随意暴露布署的服务器端口号,密码等安全性信息)
在这里插入图片描述

----------------------------linux中两种持久化方案-----------------------------

二、Redis两种持久方案

Reids持久化准备工作,先配置Linux系统参数保证Redis缓存能写入到dbfinename文件和appendfilename文件中,解决Redis服务器重启后数据消失的问题。

在这里插入图片描述

1.RDB方式持久化

a.根据配置,快照将被写入dbfilename选项指定的文件里,并储存在dir选项指定的路径下。
b.创建快照和几种方式:
(b1).客户端向Redis服务器发送BGSAVE命令来创建一个快照,Redis会调用fork来创建一个子进程来
			负责 将快照写入磁盘达到持久化的目的。
(b2).客户端向Redis服务器发送SAVE命令来创建一个快照。
(b3).通过在配置文件中设置save选项,来触发BGSAVE命令创建快照。
(b4).客户端向Redis服务器发送shutdown命令时。
(b5).Redis服务器向另一台Redis服务器发送SYNC命令进行复制操作的时候。

c.在redis.conf中设置save选项来创建BGSAVE命令来创建快照,如下:
    save 900 1 
  #表示距Redis服务器上次成功创建快照900秒后,
  #并且执行了写操作,那么Redis会开始一次新的BGSAVE操作,从而把创建的快照持久化到磁盘上。

d.演示Redis-RDB方式持久化及发生故障时进行数据恢复
(i).首先在配置文件中设置选项,笔者自定义了一个配置文件名为"redis.custom.conf"(当Redis服务
	器启动时加载此配置文件即可) 配置好选项后,
	 记得重起Redis服务(可以先shutdow,再./src/redis-server redis.custom.conf)
(ii).然后模拟Redis服务器丢失数据,使用FLUSHALL命令把数据清除掉。然后再利
		用保存了快照的文件dump.rdb来恢复Redis服务器中和缓存里的数据。

如下图:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

说明:当Redis内存占用量达到几十个GB时且剩余内存空间不多或者运行在虚拟机上时,此时执行
BGSAVE可能会导致系统长时间停顿。
停顿的原因是由于BGSAVE创建子进程引起的。而SAVE命令不会导致停顿,但SAVE会阻塞,阻塞到
快照生成为止。
根据实践经验一个内存大小为60GB的虚拟机上,当Redis占用50G内存时,使用SAVE命令创建快照的
速度远胜过使用BGSAVE命令。 所以通常情况下会写脚本来调用SAVE命令来生成快照持久化到磁盘
中,由于它的阻塞原因,常常选择在深夜执行该脚本。

2.AOF持久化

a.	什么是AOF持久化? 
简单的来说,AOF持久化会将执行的写命令写到AOF文件的末尾,以此来记录数据发生的变化。因此,
Redis只要从头到尾重新执行一次AOF文件中包含的所有写命令,就可以恢复AOF文件所记录的数据集。

b.	AOF持久化通过配置选项appendonly为yes来开启。(配置在redis.custom.conf文件中),重启Redis服
务器时加载配置文件redis.custom.conf然后根据指定的xxxx.aof来恢复数据。

c.	appendfsync选项可以设置AOF文件使用的同步频率为哪一种。

在这里插入图片描述

d.	重写和压缩AOF文件
由于Redis会不断的把写命令写到AOF文件中,AOF文件的体积越变越大,用户可以向Redis服务器进
行发送BGREWRITEAOF命令,这个命令可以移除AOF文件中冗余命令来重写AOF文件,使AOF文件
的体积尽可能的变得小。

e.	AOF持久化通过两个选项auto-aof-rewrite-percentage和auto-aof-rewrite-min-size进行。
假设用户在redis.custom.conf中配置了选项
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
持久化的同时,如果满足以下条件:
i.	启用了AOF持久化,AOF的体积大于64MB时,
ii.	并且AOF文件的体积比上一次重写后的体积至少大了一倍时
将触发Redis执行BGREWRITEAOF命令进行重写和压缩AOF文件。

f.	演示AOF持久化:
说明:这个演示与RDB类似,不同的是备份的文件由dbfilename dump.rdb变成 appendfilename 
appendonly.aof的备份(给appendonly.aof 文件备份appendonly.aof.bak,必须在FLUSHALL命令前,
因为这个命令会被记录于appendonly.aof文件中,那么恢复数据时,执行这个命令数据不也为空了?
所以要在这个命令之前备份。

具体思路:使用FLUSHALL命令清空所有数据,来模拟缓存数据的丢失,然后再这个备份文件覆盖
appendonly.aof来演示缓存的持久化
tips: redis-check-aof --fix appendonly.aof 用于修复appendonly.aof文件异常。

开始演示:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.Redis两种持久化的优缺点

1.Redis RDB持久化方案
优点:数据恢复更快。使用函数process_logs(conn,path,callback)来对日志进行聚合计算,通过
将日志处理的进度记录到Redis里面,当系统发生故障后,根据进度记录来完成之前未
完成的处理工作。
缺点:RDB方式数据完整性和一致性不高。从配置选项可以看出,它指定设置时间段
来创建快照,然后把数据持久化到存储介质中的。那么在这一段时间内快照创建失败将
会导致持久化失败。那么数据可能会丢失一大块。

2.Redis AOF持久化方案.
优点:AOF方式的数据完整性和一致性相对较高,当使用官方推荐的appendfsync everysec,
即使用持久化失败也是丢失1秒时间的数据。
 缺点:随着aof文件体积的变得越大,数据恢复变得越慢。因为Redis会从头到尾执行aof中所有写的命令。

此外:两种持久化方案在Redis中可以同时使用,也可以单独使用某一种。

参考资料:《Redis实战》

【硬件开发】振铃 如果是开关管的振铃,那么桥臂的SW处产生的振铃会窜入驱动电路,造成的结果就是驱动电路和上桥臂下桥臂之间的SW节点都会有振铃现象。如果是驱动电路的振铃,那么MCU的输出引脚还是正常的PWM,但是到了MOS管两侧就变成带有振铃的PWM波形了。开关振铃产生的原因是MOS管上面的寄生电感当开关管打开时为了保持电流不变感应出的电压会对电源和地产生冲击。开关管的驱动线上的寄生电容和寄生电感导致的振铃为驱动电路振铃。开关管上的寄生电容和寄生电感导致的振铃为开关节点振铃。、电感等元件的存在,导致电路中的电压和。 阅读详情

相关推荐

GSEA富集分析实战:从数据准备到结果解读的完整R代码指南

本文提供了一份完整的GSEA富集分析实战指南,涵盖从R环境准备、数据质量控制到基因ID转换、参数优化和结果解读的全流程。通过详细的R代码示例和实用技巧,帮助研究人员高效完成基因集富集分析,特别针对生物信息学中常见的GSEA分析痛点提供了专业解决方案。

weixin_29246195的博客 536

Redis5.0+——持久化——RDB&AOF

Redis5.0+——持久化——RDB&AOF

G_change_的博客 977

学习STM32的流体水位传感器

引言: 流体水位传感器是一种常用于测量液体水位的设备,广泛应用于水位监测、液位控制和流量计量等领域。STM32是一款功能强大的单片机,具有丰富的外设和灵活的编程能力,非常适合用于流体水位传感器的开发。本文将介绍如何使用STM32开发板与流体水位传感器进行连接和通信,并通过编写代码实现水位的测量和显示。五、总结: 通过以上的代码示例,我们可以实现使用STM32开发板与流体水位传感器进行连接和通信的功能。三、编写代码: 以下是使用STM32CubeIDE编写的示例代码,实现了读取流体水位传感器的功能。

xiaoalla的博客 740

Redis - redis.windows.conf配置文件及RDB和AOF数据持久化方案

Redis - redis.windows.conf配置文件及RDB和AOF数据持久化方案

相关项目可以查看https://gitee.com/fan-pl或https://github.com/fpl1116 2242

水电站数字孪生:水力发电在可视化领域的应用

为智慧水坝领域提供了 B/S 架构的基于 WebGL 的图形引擎,与 GIS、粒子仿真、虚拟现实、边缘计算等技术相结合,融合多元业务系统数据,形成数字孪生界面,助力水利水电工程进一步提升数字化水平,乃至为整个工业领域添砖加瓦。

二三维数据可视化/数字孪生 2255

RK平台MPP编解码实战:从源码编译到性能测试全解析

本文详细解析了在RK(瑞芯微)平台上进行MPP(Media Process Platform)多媒体编解码实战的全过程。从源码获取、交叉编译环境搭建、常见编译问题排查,到测试程序的修改调试与性能测试分析,提供了从零到一的完整指南。文章通过实测数据展示了MPP硬件编解码在嵌入式设备上的高性能与低功耗优势,帮助开发者快速掌握这一关键技术,应用于智能摄像头、视频会议终端等产品开发。

weixin_28273593的博客 544

【Redis】Centos 7 安装 Redis 5.0

Centos 7 安装 Redis5.0

qq_55119554的博客 2174

FPGA实战:给你的UART串口通信加上Verilog奇偶校验位(Modelsim仿真验证)

本文详细介绍了如何在FPGA中实现UART串口通信的Verilog奇偶校验功能,包括发送端校验位生成和接收端校验检测的设计与实现。通过Modelsim仿真验证,确保数据传输的可靠性,适用于嵌入式系统和数字通信领域。

weixin_34216614的博客 341

NoSql之Redis基于Linux开发部署+面试题讲解

本课程共28节,内容包括nosql基本特点,linux环境下的下载安装与启动,常用命令,配置文件讲解,5种基本数据类型的特点、数存储结构和操作命令,redis安全策略,使用redis实现web服务器的session共享,持久化方式和配置,redis事务,jedis操作,主从复制与读写分离,哨兵机制,ruby环境配置,redis集群搭建,集群特性总结,springmvc集成,面试题讲解等。

四非人的保研之路,2024(2025届)四非计算机的保研经验分享(西南交通、苏大nlp、西电、北邮、山软、山计、电科、厦大等)

本身我就是福建人,xmu 3小时就能到家,然后导这边毕业要求容易,不想读博,达到要求就能放实习,每周打卡35h,比较自由,遂考虑。北邮弱com,联系了蛮多老师,几乎都给了考核机会,面试的老师好几位都考核人工智能基础,会问你卷积的计算,问的还是蛮细的。当时结果是暂定,以为是稳了,遂没联系其他老师,但是之后询问发现只是候补,懒得联系其他老师,928候补到,放弃。东北大学,2000人大机试,入营点送,全国巡回面试,每个人就面不到10分钟,我就被问了3个问题就结束了,候补。科研组,导师有人脉,想读博出成果可以去。

专注于AI领域前沿知识,业余爱好开发软件 4352

置顶必读(2) | 《YOLOv11实战:从入门到深度优化》目录导航篇(持续更新中)

🏆 本文收录于 《YOLOv11实战:从入门到深度优化》 专栏。 本专栏系统梳理并持续复现全网各类 YOLOv11 / YOLO系列改进方案与实战案例,目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。 内容坚持 持续更新 + 深度拆解 + 工程落地导向,不仅讲“怎么改”,更讲“为什么这样改、如何真正落地到项目中”。

**My Coding Family** 11万+

Redis(5.0.0)持久化AOF和 RDB 结合源码分析

主要是挖个坑。候补(代码还没看完。。) https://github.com/antirez/redis/tree/5.0 一、Redis保存持久化文件 二、Redis启动加载持久化文件 src/server.c loadDataFromDisk函数 AOF 和 RDB 通过不同的方式加载 1 /* Function called at startup to load RDB ...

weixin_30455365的博客 285

代谢组数据分析(十九):随机森林构建代谢组预后模型

建立胃癌(GC)预后模型时,从队列3中的181名患者中,使用右删失结果数据进行了随机分层抽样,分为训练数据集(n = 121)和测试数据集(n = 60)。训练了一个包含1000棵树的随机生存森林(RSF)模型,根据它们基于排列的特征重要性来选择突出的特征。通过再次训练随机生存模型,并选取28种代谢物,建立了显示出色预测能力(AUROC = 0.832,95% CI:0.697-0.951)的最佳模型,用于预测测试数据集中GC患者的生存结果。

专注生信领域 1713

Redis持久化:RDB和AOF

一、为什么需要持久化? Redis对数据的操作都是基于内存的,当遇到了进程退出、服务器宕机等意外情况,如果没有持久化机制,那么Redis中的数据将会丢失无法恢复。有了持久化机制,Redis在下次重启时可以利用之前持久化的文件进行数据恢复。Redis支持的两种持久化机制: RDB:把当前数据生成快照保存在硬盘上。 AOF:记录每次对数据的操作到硬盘上。 二、RDB持久化 在指定的时间间隔内将内存中的数据集快照写入磁盘,它恢复时是将快照文件直接读到内存里。 RDB(Redis DataBase)持久化是把当前R

????????️的博客 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Redis持久化之RDB和AOF

我们知道Redis是内存数据库,数据都加载在内存中,但是数据也是需要持久化到磁盘中的,如果不保存到磁盘中,那万一Redis服务器重启了,那数据不就丢了吗?所以持久化就是将内存中的数据保存到磁盘里众所周知,Redis的持久化有2种方式,分别是RDB和AOF,下面就讲下这两种方式的区别。

qq_40853117的博客 3210

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Redis的持久化RDB和AOF详解

Redis 是基于内存的数据库,为了防止数据丢失,需要将内存中的数据持久化到磁盘。持久化机制主要有RDB和AOF两种。RDB 持久化是将 Redis 在某一时刻的内存数据快照保存到磁盘文件中;AOF 持久化是将 Redis 执行的写命令追加到文件末尾。

1加1等于的博客 1499

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Redis: 持久化之RDB和AOF

Redis 有一个高质量的课题:数据安全性与数据可靠性Redis 是一个内存型数据库,数据大部分都是存在内存里面当信息在内存中流通时,Redis 节点突然就故障挂掉当重新启动的时候,内存中的数据肯定是全部丢失了如果在这种情况下,Redis 提供了对应的持久化方案,它有两种持久化方案RDB和AOF可以把内存中的数据保存到磁盘,避免数据的流失关于RDB,我们需要了解到什么是持久化什么是快照RDB的工作原理,包括它的优点和缺点关于AOF,需要知道为什么需要有AOF。

Wang的专栏 1441

【Redis】Redis持久化机制,RDB和AOF

Redis 的持久化机制和是保证数据不丢失的核心功能,但两者的实现原理、性能开销和适用场景差异显著。把一次性保存成一个,默认文件名dump.rdb。

2301_78725423的博客 1276

Redis 持久化之 RDB & AOF

Redis持久化知识,看这一篇就够了

zwl2220943286的博客 2124

【图解】Redis的持久化方案—RDB持久化、AOF持久化、AOF重写

Redis的持久化方案(冷备):RDB和AOF RDB:Redis Dump Binary,把当前进程数据生成快照保存到硬盘的过程,触发RDB分为自动和手动两种方式。 手动触发:手动触发的命令:save和bgsave,两个命令都可以触发生成快照生成RDB文件,但是有区别: save:阻塞Redis的服务器进程直至RDB文件创建完成 bgsave:会由Redis主进程fork出来一个子进程,子进程会把数据集先写入临时文件,写入成功之后,再替换之前的RDB文件,用二进制压缩存储,保证RDB文件始终存储的

不是很懂 2万+

【Redis】持久化机制:RDB / AOF 的应用与场景

本文详细介绍了Redis的数据持久化,包括AOF、RDB两种方式;涉及基本概念、触发方式、流程说明、文件处理、命令写入、文件同步/恢复、以及优缺点与适用场景;最后介绍了不使用AOF/RDB的应用场景与实现方案。

卜及中的博客 1452

Redis 持久化机制 RDB 和 AOF 区别

Redis 是一个开源的内存数据结构存储系统,广泛应用于缓存、会话存储、实时分析等场景。虽然 Redis 本质上是内存数据库,但它支持持久化机制,将数据保存在磁盘中以防止数据丢失。在 Redis 中,主要有两种持久化机制:RDB(Redis 数据库快照)和 AOF(追加文件)。这两种持久化机制各有优缺点,适用于不同的使用场...

Java_fenxiang的博客 2035

详谈redis数据持久化(RDB、AOF)

详谈redis数据持久化 RDB和AOF 持久化原理 什么是RDB 什么是AOF redis做为缓存,数据的持久化是怎么做的? 两种持久化方式有什么区别 这两种方式,哪种恢复的比较快 持久化,顾名思义,指的是将短暂的、易失的数据转化为长时间保存,且不易丢失的格式。在数据库的语境中,持久化常常指的是将内存中的数据保存到硬盘或其他长期存储介质中,从而确保即使在系统崩溃、断电或其他突发事件中,数据也不会丢失。

m0_64422133的博客 1472

Redis持久化:RDB与AOF全面解析

Redis提供两种持久化机制:RDB和AOF。RDB通过快照保存全量数据,文件小恢复快但可能丢失数据;AOF记录所有写命令,数据安全但文件大恢复慢。两者可同时启用,AOF优先级更高。RDB支持手动/自动触发,采用子进程异步保存;AOF通过Rewrite机制压缩文件。配置选项包括同步策略、重写条件等,需根据业务需求权衡性能与数据安全性。持久化过程均涉及内存数据到磁盘的转换,确保异常情况下数据可恢复。

qq_47896523的博客 861

Redis持久化方案RDB和AOF

RDB通过周期性快照实现快速恢复,但可能丢失数据;AOF通过记录命令保证数据安全,但需重写优化文件大小。两者各有适用场景,实际中可根据需求灵活组合。

web2u的博客 1362

Redis持久化策略——RDB、AOF、混合

RDB、AOF、混合持久化、过期KEY清除策略

天羽云龙的博客 3839
上一篇: Redis 第四集Spring声明式缓存(Redis)
下一篇: Redis 第六集Redis主从复制(Redis)
Netaa001
博客等级 码龄14年 29粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值