Redis数据持久化——RDB快照和Aof日志追加

Redis RDB AOF Redis 提供了两种持久化机制:第一种是 RDB,又称快照(snapshot)模式,第二种是 AOF 日志,也就追加模式。 阅读详情

Redis数据持久化

数据持久化:将内存中的数据保存到磁盘中。

作用:让Redis服务重启后可以恢复之前的数据。

一、Redis数据持久化的方式:

 ·RDB(快照):

将内存中Redis缓存的所有数据,都以二进制字符串的方式保存为一个.rdb文件。

特点:占用存储小;当恢复所有数据时,速度快。(恢复某一段数据比较慢,意外宕机还可能丢失几分钟的数据)不建议频繁生成快照。

 ·AOF(日志追加):

将每次增、删、改的操作添加到.aof日志中,默认明文存储(可压缩),占据更大的存储空间,保存数据时,运行资源占用少。追加日志可以实时添加。

对比维度

RDB(快照)

AOF(日志)

核心原理

定时生成内存全量数据的二进制快照

实时追加每一条写指令到文本日志

文件格式

二进制文件(.rdb),体积小

文本文件(.aof),体积大(重写前)

数据安全性

安全性低:间隔快照,可能丢失“快照后-宕机前”的数据

安全性高:支持每秒/实时刷盘,最多丢失1秒数据

恢复速度

快:直接解析二进制数据到内存

慢:需重新执行所有写指令

性能影响(运行时

低:仅fork子进程时短暂阻塞,后续无影响

中/高:刷盘频繁(如everysec/always),I/O开销大

性能影响(恢复时

快:适合大规模数据恢复

慢:数据量越大,恢复时间越长

触发方式

自动(save配置)、手动(save/bgsave)

自动(刷盘策略)、手动(bgrewriteaof重写)

适用场景

非核心数据、备份/灾备、可接受数据丢失的场景

核心数据、需高安全性(如金融、交易)的场景

默认开启

是(默认持久化方案)

否(手动配置appendonlyyes)

二、RDB持久化触发机制

触发RDB持久化过程分为手动触发和自动触发

2.1、手动触发:通过 Redis 命令主动生成 RDB:

save:主进程直接执行 RDB,期间会阻塞所有客户端请求(不推荐生产环境,适用于小型数据集);

bgsave:后台保存,主进程 fork 子进程执行 RDB,主进程不阻塞(生产环境首选)。

2.2、自动触发

自动触发持久化,本质是 Redis 通过判断,如果满足设置的触发条件,自动执行一次 bgsave 命令。

通过 redis.conf 配置 “时间 - 修改次数” 规则,满足条件时自动执行 RDB,示例配置:

# 规则格式:save <秒数> <修改次数>

save 900 1       # 900秒内(15分钟)至少1次数据修改,触发RDB

save 300 10      # 300秒内(5分钟)至少10次数据修改,触发RDB

save 60 10000    # 60秒内至少10000次数据修改,触发RDB

当设置多个 save m n 命令时,满足任意一个条件都会触发持久化。

若需禁用自动 RDB,可注释所有 save 配置,或添加 save ""

三、RDB持久化配置

3.1、配置文件

vim /etc/redis/redis.conf

#RDB持久化自动触发条件

save 900 1

save 300 10

save 60 10000

#bgsave持久化失败,是否停止持久化数据到磁盘,yes 表示停止持久化,no 表示忽略错误继续写文件

stop-writes-on-bgsave-error yes

#rdb文件是否压缩

rdbcompression yes

#写入文件和读取文件时是否开启rdb文件检查,检查是否有无损坏,如果在启动是检查发现损坏,则停止启动。

rdbchecksum yes

#rdb持久化后存放的文件名

dbfilename dump.rdb

#rdb持久化后文件的存放路径

dir ./

注意:

文件压缩要是开启的话:Redis 会采用 LZF 算法进行压缩。如果不想消耗 CPU 性能来进行文件压缩的话,可以设置为关闭此功能,这样的缺点是需要更多的磁盘空间来保存文件。

3.2、配置查询/设置

config get xxx

127.0.0.1:6379> config get dir

1) "dir"

2) "/usr/local/redis"

127.0.0.1:6379> config get dbfilename

1) "dbfilename"

2) "dump.rdb"

127.0.0.1:6379> config get stop-writes-on-bgsave-error

1) "stop-writes-on-bgsave-error"

2) "yes"

config set xxx

[root@zuolaoshi /]# cd /usr/local/redis

[root@zuolaoshi redis]# ./bin/redis-cli

127.0.0.1:6379> config set dir "/usr/local/redis/data"

OK

127.0.0.1:6379> config get dir

1) "dir"

2) "/usr/local/redis/data"

注意:

使用命令修改的方式,马上生效,在 Redis 重启之后就会丢失。手动修改 Redis 配置文件,想要立即生效需要重启 Redis 服务器,会一直有效。

3.3、禁用持久化

127.0.0.1:6379> config set save ""

OK

3.4、RDB文件恢复

当 Redis 服务器启动时,Redis 就会自动加载 RDB 文件恢复持久化数据。

验证加载

启动redis时

image20200229014938758.png

四、RDB持久化案例

4.1、手动持久化

127.0.0.1:6379> config set save ""

OK

127.0.0.1:6379> set s helloworld!

OK

127.0.0.1:6379> get s

"helloworld!"

127.0.0.1:6379> save

OK

127.0.0.1:6379> del s

(integer) 1

127.0.0.1:6379> get s

(nil)

127.0.0.1:6379> exit

[root@zuolaoshi redis]# ./bin/redis-cli shutdown

[root@zuolaoshi redis]# ./bin/redis-server /etc/redis/redis.conf

#Redis服务端启动成功提示信息

[root@zuolaoshi redis]# ./bin/redis-cli

127.0.0.1:6379> get s

"helloworld!"

4.2、自动持久化案例

#新建log文件夹

[root@zuolaoshi redis]# mkdir log

#配置日志文件

[root@zuolaoshi redis]# vim redis.conf

#配置:logfile "/usr/local/redis/log/redis.log"

[root@zuolaoshi redis]# ./bin/redis-server /etc/redis/redis.conf

[root@zuolaoshi redis]# ./bin/redis-cli

127.0.0.1:6379> config set save "10 1"

OK

127.0.0.1:6379> config get save

1) "save"

2) "10 1"

127.0.0.1:6379> set a 123

OK

127.0.0.1:6379> set b 456

OK

127.0.0.1:6379> set c 789

OK

127.0.0.1:6379> set d 8910

OK

127.0.0.1:6379> exit

[root@zuolaoshi redis]# cd log

[root@zuolaoshi log]# ls

redis.log

[root@zuolaoshi log]# vim redis.log

image20200229024640021.png

五、AOF持久化

AOF方式在使用Redis存储非临时数据时,一般都需要打开AOF持久化来降低进程终止导致的数据丢失,AOF可以将Redis执行的每一条写命令追加到硬盘文件中,这一过程显然会降低Redis的性能,但是大部分情况下这个影响是可以接受的,另外,使用较快的硬盘能提高AOF的性能。

5.1、AOF工作流

命令写入 (append)、文件同步(sync)、文件重写(rewrite)、重启加载 (load)

image20200303224156711.png

5.2、AOF特点

默认文件名是 appendonly.aof。保存的位置由配置中 dir 来配置目录。

AOF 每次都会保存写命令,数据实时性更高。

AOF 需要使用“重写机制”来优化,每次记录写命令,文件会很大的问题。

AOF 根据不同的“缓冲区同步策略”将我们缓冲区中写入的命令,同步到磁盘。

重写机制

image20200303233558568.png

缓冲区同步策略

设置appendfsync 控制,一共3种:

always:客户端的每一个写操作都保存到aof文件当,这种策略很安全,但是每个写都会有IO操作,所以也很慢。

everysec:每秒写入一次aof文件,因此,最多可能会丢失1s的数据。 推荐使用这种方式。

no: 交由操作系统来处理什么时候写入aof文件。更快,但也是最不安全的选择,不推荐使用。

5.3、持久化恢复

在重启redis服务时,rdb与aof如何执行?

image20200303235441014.png

六、开启AOF持久化

6.1、修改配置

修改配置文件/usr/local/redis/redis.conf

appendonly yes #表示开启AOF持久化,默认是no表示关闭

appendfilename "appendonly.aof" #AOF持久化文件名

appendfsync everysec #缓冲同步策略,默认值

no-appendfsync-on-rewrite no  #是否重写,默认不重写

redis的 dump.rdb 文件 dump.rdb--- 立即下载

相关推荐

horizon之为connection服务器配置证书

打开connection1服务器(connection2 同connection1)再输入connection1的IP地址 可通过域名和IP地址进行登录。这时候用域名登录就发现证书已经没有警告了。win+R 调出“运行”,输入mmc。connection2 同上。如果还有报错请重启一下服务器。打开connection1。可以把这个先删掉 没用。打开DC_01服务器。右键选择证书颁发机构。友好名称只能是vdm。重启之后就没有报错了。

送个祝福给小豪的博客 2958

Redis数据持久化之RDB快照

RDB快照是Redis数据持久化的一种方式,又称为Snapshot,默认情况下Redis在指定的时间间隔内将内存中的数据集快照写入磁盘,存放在副本文件中。当Redis重启后又自动读取到内存中。

huangjhai的博客 2247

Dify部署后访问报502?手把手教你排查和修复Nginx反向代理问题

本文针对Dify部署后常见的502 Bad Gateway错误,提供了从基础容器状态检查到Nginx配置与Docker网络诊断的完整排查流程。详细解析了错误本质,并给出动态服务发现修复与静态IP配置两种解决方案,帮助开发者彻底解决Nginx反向代理问题,确保Dify平台稳定访问。

rnn9storyteller的博客 1096

图解Redis RDB持久化 | 创建与载入|文件结构

Redis RDB持久化

面向生活编程 1037

Autojs实战教程---番茄免费小说Apk文件和源码

邀请码:782383363 字节跳到的App,推荐给大家,还是值得用一用的。不废话直接代码。 代码是带UI的复制后可以直接使用。 "ui"; //#region UI var rootUrl = "http://114.115.220.1:91";//各位大神小弟自己的服务器别黑谢谢 var storaySign = "FanqieXiaoShuo0412326@163.com"; var woolStorage = storages.create(storaySign);//创建本地存储 var

zy0412326的专栏 2万+

【TCAX相关】Python 官方手册下载页面(中文+英文)

Python 官方手册下载页面(中文+英文) 中文: https://docs.python.org/zh-cn/3.8/archives/ https://docs.python.org/zh-cn/3.6/archives/ 英文: https://www.python.org/doc/versions/ https://docs.python.org/3/archives/ https://www.python.org/ftp/python/doc/ ...

Seekladoom的博客 1010

Redis持久化之RDB

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

m0_53328239的博客 341

EXCEL VBA 导出高清图片方法

EXCEL VBA 导出高清图片方法 将EXCEL表格内容另存为图片的方法有很多种,简单的比如“复制为图片格式并另存”,“打印成XPS”等等,本文着重的是利用VBA实现的方法。 该方法适合用于中大型图文表格输出为图片格式,方便传阅,在office2010及以上版本最为流畅。 具体看代码: Sub printA4() Dim rng As Range '定义截图范围变量 'm = 20...

nfser_burn7的专栏 1万+

【Redis】——RDB快照

Redis 是内存数据库,但是它为数据的持久化提供了两个技术,一个是AOF日志,另一个是RDB快照: AOF 文件的内容是操作命令; RDB 文件的内容是二进制数据。

sjp11的博客 1027

保姆级教程:用GROMACS 2022.4的拉伸模拟(SMD)加速蛋白-蛋白组装过程

本文详细介绍了如何使用GROMACS 2022.4的拉伸分子动力学模拟(SMD)技术加速大蛋白组装过程。通过CHARMM36力场和SMD技术,将传统需要数月的蛋白结合过程缩短至数天,大幅提升模拟效率。文章包含参数设计、索引组创建、周期性边界处理等实战技巧,并提供了完整的GPU加速工作流和常见问题解决方案。

weixin_30338481的博客 445

YOLOv11改进 | 模型知识蒸馏篇 | 利用模型蒸馏改进YOLOv11进行无损涨点 | 离线蒸馏(附代码 + 完整文件 + 解析教程)

这篇文章给大家带来的最新改进是模型的蒸馏,利用教师模型指导学生模型从而进行模型的涨点,本文的内容不仅可以用于论文中,在目前的绝大多数的工作中模型蒸馏是一项非常重要的技术,所以大家可以仔细学习一下本文的内容,本文从YOLOv8的项目文件为例,进行详细的修改教程,文章内包括完整的修改教程,针对小白我出了视频修改教程,如果你还不会我提供了修改后的文件大家直接运行即可,所以说不用担心不会适用!模型蒸馏真正的无损涨点,蒸馏你只看这一篇文章就足够了!欢迎大家订阅我的专栏一起学习YOLO!

Snu77的博客 4318

生成Redis的RDB文件

1.RDB(快照) 将内存中所有内容写入到一个文件中 2.触发生成RDB三种机制 2.1 手动执行save命令 同步执行【会阻塞进程】 如果已经存在旧的RDB文件, 会利用新的覆盖旧的 2.2 手动执行bgsave命令 异步执行【不会阻塞进程】 如果已经存在旧的RDB文件, 会利用新的覆盖旧的 2.3 通过配置文件自动生成 通过配置文件【Redis安装目录-redis.windows-service.conf】指定自动生成条件, 一旦满足条件就会自动执行bgsave生成RDB文件 dir ./

Cao_Mary的博客 1684

大数据开发工程师必备面试题与解答

大数据开发岗位一直是互联网行业的热门方向,面试过程中既考察基础知识,也关注实际项目经验和问题解决能力。本文整理了等核心组件相关的高频面试题及参考解答,帮助大家高效准备面试。大数据面试不仅考察基础理论,更看重项目经验与问题解决能力。本文涵盖了等核心知识点及调优思路,希望能帮助你在面试中游刃有余。

X2829352498的博客 302

【Redis(2)】Redis的持久化方式RDB和AOF配置

Redis结合使用RDB和AOF持久化可以提供数据的快速恢复和高完整性。然而,"高性能"是相对的,并且取决于具体的使用场景和系统资源。在实际部署中,应该根据工作负载、数据重要性、硬件能力以及对数据丢失的容忍度来调整配置。

JCoder的博客 2259

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

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

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

redis:RDB和AOF机制

redis是一个内存数据库,把数据存储在内存中的,而内存中的数据是不持久的,要想能够做到持久,就需要让redis把数据存储到硬盘上。但redis相比于mysql这样的关系型数据库,最明显的特点就是效率高,速度快。这样便导致redis为了保证速度快,数据要存储在内存中,又为了持久化,数据要存储到硬盘中;当要插入一个新的数据时,需要把这个数据,“同时”写入到内存和硬盘;当要查询某个数据时,直接从内存读取;硬盘数据只是在redis重启的时候,用来恢复内存中的数据的。

li209779的博客 1757

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

(二)Docker安装Redis实战(持久化AOF和RDB快照)

不仅教你安装,还教你删除。 每一行命令都带图解,绝对能懂。 希望对大家有所帮助

weixin_53846408的博客 1476

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Redis的持久化机制详解—RDB与AOF持久化

详细介绍了Redis的持久化机制,包括RDB与AOF持久化,以及混合持久化。

终生学习践行者 1549

Redis 持久化方式 AOF RDB

AOF、RDB、Redis持久化、写时复制、Copy On Write、COW

aofeng9的博客 969

Redis 数据持久化

持久化功能有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。

卷不动的程序员 2806

redis的持久化RDB与AOF详解

Redis读写速度快、性能优越是因为它将所有数据存在了内存中,然而,当Redis进程退出或重启后,所有数据就会丢失。所以我们希望Redis能保存数据到硬盘中,在Redis服务重启之后,原来的数据能够恢复,这个过程就叫持久化。

sanylove的博客 743

Redis 持久化机制:RDB 和 AOF

Redis主要提供了两种持久化方式:RDB(RedisDatabase)和AOF(Append-OnlyFile)。它们各自的实现原理、优缺点以及适用场景如下。

maply的博客 1455

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

Redis 提供了两种主要的持久化方式:RDB(Redis Database)和 AOF(Append Only File)。默认情况下,Redis 没有开启任何持久化方式,但可以在配置文件(redis.conf)中启用它们。

L丶小先生的博客 1007

【Redis持久化】RDB和AOF

Redis持久化理解

yican2580的博客 1019

Redis 缓存持久化机制详解:RDB vs AOF 全解析

RDB 会在某个时间点将 Redis 内存中的数据整体快照保存成一个 .rdb 文件,存储在硬盘上。AOF 会将每一次写命令(set、hset、lpush 等)都追加到一个日志文件中(.aof 文件),从而实现数据恢复。RDB 提供高性能的快照备份,AOF 提供更强的数据完整性保障。两者结合,才能让 Redis 在高可用场景下既稳又快!本文全面解析了 Redis 的两种持久化机制:RDB(快照)和 AOF(追加日志)。

一键难忘的博客 3093

Redis 持久化机制:AOF 与 RDB 详解

Redis 是基于内存型的 NoSQL,和 MySQL 是不同的,使用内存存储进行数据缓存。如果想要实现数据的持久化,Redis 也可支持将内存数据保存到硬盘文件中。以MySQL 做类比RDB类似MySQL dump,AOF类似 MySQL binlog。

dnuiking的博客 1895

Redis 持久化详解:RDB 与 AOF 的配置、触发机制和实际测试

Redis持久化详解:RDB与AOF配置、触发机制及实际测试,深入探讨数据快照、追加备份,以及持久化工作原理。通过实测手动触发与自动触发,全面了解Redis数据保障机制。

人生苦短,我用python 3763
上一篇: Redis基础安装和配置
下一篇: Redis集群介绍——主从、哨兵、集群
chen_note
博客等级 码龄1年 251粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值