Redis持久化之RDB和AOF

Redis 数据备份与恢复 Redis 数据备份与恢复是保障数据安全的重要环节。通过合理配置备份策略和恢复方式,可以有效降低数据丢失风险,提高数据可靠性。本文详细介绍了 Redis 数据备份与恢复的方法,希望对您有所帮助。在实际应用中,请根据具体需求选择合适的备份与恢复策略,确保 Redis 数据的安全与稳定。 阅读详情

Redis持久化之RDB和AOF

1、RDB详解

RDB 是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据。

1.1 从配置文件了解RDB

打开 redis.conf 文件,找到 SNAPSHOTTING 对应内容
1.1、RDB核心规则配置(重点)

save <seconds> <changes>
# save ""
save 900 1
save 300 10
save 60 10000

解说:save <指定时间间隔> <执行指定次数更新操作>,满足条件就将内存中的数据同步到硬盘中。官方出厂配置默认是 900秒内有1个更改,300秒内有10个更改以及60秒内有10000个更改,则将内存中的数据快照写入磁盘。
若不想用RDB方案,可以把 save “” 的注释打开,下面三个注释.

2、指定本地数据库文件名,一般采用默认的 dump.rdb

dbfilename dump.rdb

3、指定本地数据库存放目录,一般也用默认配置

dir ./

4 、默认开启数据压缩

rdbcompression yes

解说:配置存储至本地数据库时是否压缩数据,默认为yes。Redis采用LZF压缩方式,但占用了一点CPU的时间。若关闭该选项,但会导致数据库文件变的巨大。建议开启。

5、通过RDB文件恢复数据
将dump.rdb 文件拷贝到redis的安装目录的bin目录下,重启redis服务即可。在实际开发中,一般会考虑到物理机硬盘损坏情况,选择备份dump.rdb 。可以从下面的操作演示中可以体会到。

6、RDB优缺点
优点:
1 适合大规模的数据恢复。
2 如果业务对数据完整性和一致性要求不高,RDB是很好的选择。

缺点:
1 数据的完整性和一致性不高,因为RDB可能在最后一次备份时宕机了。
2 备份时占用内存,因为Redis 在备份时会独立创建一个子进程,将数据写入到一个临时文件(此时内存中的数据是原来的两倍哦),最后再将临时文件替换之前的备份文件。
所以Redis 的持久化和数据的恢复要选择在夜深人静的时候执行是比较合理的。
操作演示:

[root@itdragon bin]# vim redis.conf
save 900 1
save 120 5
save 60 10000
[root@itdragon bin]# ./redis-server redis.conf
[root@itdragon bin]# ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set key1 value1
OK
127.0.0.1:6379> set key2 value2
OK
127.0.0.1:6379> set key3 value3
OK
127.0.0.1:6379> set key4 value4
OK
127.0.0.1:6379> set key5 value5
OK
127.0.0.1:6379> set key6 value6
OK
127.0.0.1:6379> SHUTDOWN
not connected> QUIT
[root@itdragon bin]# cp dump.rdb dump_bk.rdb
[root@itdragon bin]# ./redis-server redis.conf
[root@itdragon bin]# ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> FLUSHALL 
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> SHUTDOWN
not connected> QUIT
[root@itdragon bin]# cp dump_bk.rdb  dump.rdb
cp: overwrite `dump.rdb'? y
[root@itdragon bin]# ./redis-server redis.conf
[root@itdragon bin]# ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> keys *
1) "key5"
2) "key1"
3) "key3"
4) "key4"
5) "key6"
6) "key2"

第一步:vim 修改持久化配置时间,120秒内修改5次则持久化一次。
第二步:重启服务使配置生效。
第三步:分别set 5个key,过两分钟后,在bin的当前目录下会自动生产一个dump.rdb文件。(set key6 是为了验证shutdown有触发RDB快照的作用)
第四步:将当前的dump.rdb 备份一份(模拟线上工作)。
第五步:执行FLUSHALL命令清空数据库数据(模拟数据丢失)。
第六步:重启Redis服务,恢复数据…咦????( ′◔ ‸◔`)。数据是空的????这是因为FLUSHALL也有触发RDB快照的功能。
第七步:将备份的 dump_bk.rdb 替换 dump.rdb 然后重新Redis。

注意点:SHUTDOWN 和 FLUSHALL 命令都会触发RDB快照,这是一个坑,请大家注意。

其他命令:

keys * 匹配数据库中所有 key
save 阻塞触发RDB快照,使其备份数据
FLUSHALL 清空整个 Redis 服务器的数据(几乎不用)
SHUTDOWN 关机走人(很少用)

2、AOF详解

AOF :Redis 默认不开启。它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。Redis 重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。

2.1、从配置文件了解AOF

打开 redis.conf 文件,找到 APPEND ONLY MODE 对应内容
1 redis 默认关闭,开启需要手动把no改为yes

appendonly yes

2 指定本地数据库文件名,默认值为 appendonly.aof

appendfilename "appendonly.aof"

3 指定更新日志条件

# appendfsync always
appendfsync everysec
# appendfsync no

解说:
always:同步持久化,每次发生数据变化会立刻写入到磁盘中。性能较差但数据完整性比较好(慢,安全)
everysec:出厂默认推荐,每秒异步记录一次(默认值)
no:不同步

4 配置重写触发机制

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

解说:当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发。一般都设置为3G,64M太小了。

2.2 触发AOF快照

根据配置文件触发,可以是每次执行触发,可以是每秒触发,可以不同步。

2.3 根据AOF文件恢复数据

正常情况下,将appendonly.aof 文件拷贝到redis的安装目录的bin目录下,重启redis服务即可。但在实际开发中,可能因为某些原因导致appendonly.aof 文件格式异常,从而导致数据还原失败,可以通过命令redis-check-aof --fix appendonly.aof 进行修复 。从下面的操作演示中体会。

2.4 AOF的重写机制

前面也说到了,AOF的工作原理是将写操作追加到文件中,文件的冗余内容会越来越多。所以聪明的 Redis 新增了重写机制。当AOF文件的大小超过所设定的阈值时,Redis就会对AOF文件的内容压缩。

重写的原理:Redis 会fork出一条新进程,读取内存中的数据,并重新写到一个临时文件中。并没有读取旧文件(你都那么大了,我还去读你??? o(゚Д゚)っ傻啊!)。最后替换旧的aof文件。

触发机制:当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发。这里的“一倍”和“64M” 可以通过配置文件修改。

2.5 AOF 的优缺点

优点:数据的完整性和一致性更高
缺点:因为AOF记录的内容多,文件会越来越大,数据恢复也会越来越慢。

3、总结

1、Redis 默认开启RDB持久化方式,在指定的时间间隔内,执行指定次数的写操作,则将内存中的数据写入到磁盘中。
2、RDB 持久化适合大规模的数据恢复但它的数据一致性和完整性较差。
3、Redis 需要手动开启AOF持久化方式,默认是每秒将写操作日志追加到AOF文件中。
4、AOF 的数据完整性比RDB高,但记录内容多了,会影响数据恢复的效率。
5、Redis 针对 AOF文件大的问题,提供重写的瘦身机制。
6、若只打算用Redis 做缓存,可以关闭持久化。
7、若打算使用Redis 的持久化。建议RDB和AOF都开启。其实RDB更适合做数据的备份,留一后手。AOF出问题了,还有RDB。

第六阶段【Redis:Redis基础】17:Redis备份 Redis备份 阅读详情

相关推荐

CentOS 7下rsyslog日志服务器搭建全攻略:从安装到避坑

本文详细介绍了在CentOS 7系统上搭建rsyslog日志服务器的完整流程,从基础安装到高级配置,包括协议设置、日志模板设计、安全加固和性能优化。特别分享了生产环境中的实战技巧和常见问题解决方案,帮助用户高效构建可靠的日志管理系统。

happy2的博客 687

redis备份的两种方法以及优缺点

Redis 持久化之RDB和AOF Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。如果你想快速了解和使用RDB和AOF,可以直接跳到文章底部看总结。本章节通过配置文件,触发快照的方式,恢复数据的操作,命令操作演示,优缺点来学习 Redis 的重点知识持久化。 RDB 详解 RDB 是 Redis 默认的持久化方案。在指定的时...

weixin_42555019的博客 2708

AOI检测总误判?五大常见问题与实战解决方案

通过对图像质量、检测程序、外界干扰、算法优化以及设备维护和校准的全面把控,企业可以有效降低误判率,提升AOI检测的准确性和可靠性,为工业生产提供更有力的质量保障。表现描述:在AOI检测时,元器件字符因印刷颜色深浅、模糊或受到灰尘干扰等差异,再加上元件库参数未根据实际生产优化,会使系统误将合格元件判定为不合格,严重影响生产效益和产品质量。优化元件库:着重检测关键差异字符,如型号编码等关键信息,剔除不必要字符的检测项,减少干扰,专注于关键识别的准确性。检测时,根据物料信息动态更新检测参数,使系统适应物料变化。

ALeader_AOI的博客 3493

redis详解之数据备份与恢复

Redis所有数据都是保存在内存中,Redis数据备份可以定期的通过异步方式保存到磁盘上,该方式称为半持久化模式,如果每一次数据变化都写入aof文件里面,则称为全持久化模式。本章节通过配置文件,触发快照的方式,恢复数据的操作,优缺点来学习 Redis 的重点知识——数据备份与恢复。1、方式一:半持久化RDB模式(Redis DataBase)【redis备份默认方式】通过快照完成,由用户在redis.conf配置文件中设置两个参数:时间和改动的键的个数。当在指定的时间内被更改的键的个数大于指定的数值时,re

原名:@程序员大禹 2万+

虚拟机ubuntu22.04.3中安装vitis2024.1注意事项

虚拟机ubuntu安装vitis2024.1

qq_52033578的博客 2493

FreeModbus V1.6主机模式实战:如何在STM32上实现Modbus RTU主从一体通信

本文详细介绍了如何在STM32平台上利用FreeModbus V1.6开源协议栈实现Modbus RTU主从一体通信。文章深入剖析了V1.6版本主机模式的架构设计,提供了从硬件配置、串口与定时器移植到FreeRTOS操作系统适配的完整实战指南,并分享了数据缓冲区管理、多线程协同及高级调试技巧,为构建稳定可靠的工业通信网关提供了系统化解决方案。

weixin_29194255的博客 372

redis备份方式

AOF 文件记录了 Redis 数据库的所有写操作,使用 AOF 方式可以实现数据的持久化和恢复。在实际应用中,可以根据数据重要性、恢复速度、磁盘空间和性能的需求来选择合适的备份方式,或者采取同时使用 RDB 和 AOF 备份的策略,以兼顾性能和数据保护。最好的做法是定期测试和验证备份的完整性和可靠性,确保备份机制符合实际需求和系统运行环境的要求。Redis 可以通过定期触发 RDB 持久化来生成备份文件。RDB 备份是将 Redis 内存中的数据以快照的形式写入磁盘文件,文件以 .rdb 扩展名保存。

标准都是留给不爱的人,爱的本质是自由意志的沉沦 2865

2026 MCM Problem A:智能手机电池连续时间建模——完整解题思路附第一问解题代码

摘要:本文针对2026年MCM A题"智能手机电池连续时间建模"问题,提出基于能量守恒原理的微分方程模型。通过建立以SOC(t)为状态变量的动态系统,将屏幕亮度、处理器负载等主要耗电因素纳入统一功率框架,实现了不同使用场景下的电量变化精确描述。研究表明,屏幕亮度和CPU负载对续航时间影响最大,温度与后台任务会产生放大效应。该模型具有物理可解释性和应用扩展性,为手机电源管理提供了理论依据。(150字)

一键难忘的博客 767

Redis持久化:RDB和AOF

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

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

栅格数据做相关性分析前的预处理(批量定义投影、栅格投影、重采样)

最近在做两个栅格数据的相关性分析,这个最主要的是两个栅格数的行列号是一致的(也就是说坐标系、分辨率一致),那么标准的栅格数据的分辨率是以米的形式存在的,但是有一些栅格数据是以度为单位存在的,所以在做分析前,一定要先把其转换为米,否则在重采样的时候就会出错。(相关文章——栅格数据以度为单位变为以米为单位的简单做法)当然,在变其分辨率的单位前,一定要将其坐标系转换为一致。所以就有以下的步骤(如何将两个栅格数据的坐标系、分辨率的单位和分辨率一致) 1.首先,要看两个栅格数据的坐标系是否一致,如果不一致,要先统一到

qq_41828818的博客 8350

lammps原子组速度的计算方法

在lammps摩擦、冲击、压痕等模拟过程中,涉及到某个原子组的整体移动,如果要输出这个原子组的整体移动速度,可以使用vcm()函数。下面是一个具体的使用案例,金刚石球在盒子内移动,输出移动过程中金刚石球在x方向的质心速度。vcm()是lammps自带的一个函数,返回原子组质心在设定方向的速度。其中,ID为group-ID,dim为方向,可设置x、y或者z方向。大家好,我是小马老师。

lammps_jiayou的博客 343

Redis的持久化RDB和AOF详解

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

1加1等于的博客 1499

排队论 | 排队论建模方法

排队论 | 排队论建模方法

算法如诗的博客 352

Redis——redis的rdb和aof持久化

配置redis持久化,RDB和AOF配置;

FlyLikeButterfly的博客 1033

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Redis: 持久化之RDB和AOF

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

Wang的专栏 1440

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

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

2301_78725423的博客 1273

【Redis 持久化:RDB和AOF】

一文带你知道RDB和AOF原理,从更深层次了解机制。

m0_68872612的博客 1131

Redis持久化RDB和AOF区别

RDB RDB是Redis内存到硬盘的快照,用于redis持久化,创建RDB二进制文件,将存储在内存中的数据,持久化的放到硬盘中,当我们需要这些数据的时候,启动载入RDB文件,数据将会被存入内存中,其实RDB就是一种快照的方式持久化存储数据,也可以作为一种复制媒介。 触发机制--主要三种方式 save 同步命令(会阻塞redis) bgsave 异步命令(fork) 自动 #关闭自动保存配置#save 900 1 #900秒 改了一次就自动生成RDB文件#save 300 10 #300秒修改了1

java_atguigu的博客 4639

【Redis】RDB和AOF持久化

RDB和AOF

m0_70088010的博客 1344

关于Redis持久化——AOF和RDB

前言 Redis是常用的一个内存数据库,也是面试的一个高频考点。先前就曾多次使用,但至于其具体原理等并不了解,因此专程学习一下。 本次学习主要目标是Redis的持久化机制,主体参照小林coding,其他部分内容来自于朋友的一次面经。 朋友的面经——顺丰二面(JAVA) 这个是朋友上个月顺丰二面中遇到的,给我了极大的震撼…没想到顺丰问的都这么深入了。 RDB 基于当前 Redis 节点内存数据打快照,如何打的?主进程 fork 一个子进程负责的,会不会阻塞?哪些地方可能会阻塞?RDB 存在的问题?RDB 优

Ws_Te47的博客 1027

Redis的持久化 AOF和RDB

Redis的持久化 前言:此文章是学习Redis 核心技术与实战时做的学习笔记,仅供学习和参考。 Redis如何避免数据丢失? Redis用作缓存时,数据存储在内存中。一旦服务器宕机,内存中的数据就会全部丢失。 一个解决方案是从数据库中恢复数据,但是存在两个问题:1、数据库中的数据是存储在硬盘中的,存取速度相对于内存来说太慢,大大影响了Redis的性能;2、频繁读取数据会给数据库增加压力; 因此Redis拥有自己的持久化机制,即 AOF(Append Only File)日志和 RDB 快照。 AOF日志

Qiuyuguohou的博客 3199

Redis 持久化之RDB和AOF

** Redis 持久化之RDB和AOF ** Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。如果你想快速了解和使用RDB和AOF,可以直接跳到文章底部看总结。本章节通过配置文件,触发快照的方式,恢复数据的操作,命令操作演示,优缺点来学习 Redis 的重点知识持久化。 RDB 详解 RDB 是 Redis 默认的持久化方案...

qq_35679620的博客 1万+

Redis 持久化机制 RDB 和 AOF 区别

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

Java_fenxiang的博客 2035

Redis解读持久化RDB和AOF原理

我们知道关系型数据库比如MySQL支持全备、差备、增备。为了保证Redis故障重启后仍然可用我们的Redis支持全备(RDB快照备份)和增备(AOF日志连续增量备份),下面我们就来解读Redis持久化的原理。 RDB基础知识 RDB文件存在是以一个压缩后的二进制文件,这个RDB文件一般是保存在Redis安装目录下,通过启动Redis服务器执行rdbLoad函数加载RDB文件,执行rdbSave函数保存RDB文件。 RDB保存 rdbSave函数负责将内存中的数据库数据以RDB格式保存到磁盘中,如

mango_love的专栏 4902

【Redis】五、Redis持久化、RDB和AOF

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

hhb442的博客 1279
上一篇: Redis基础
下一篇: JVM基础(一)
程序员老石
博客等级 码龄8年 286粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值