Redis持久化

redis数据持久化 在实际使用中需要根据Redis作为主存还是缓存、数据完整性和缺失性的要求、CPU和内存情况等诸多因素来确定适合自己的持久化方案,一般来说稳妥的做法包括:RDB与AOF同时使用:最安全的做法,即使AOF损坏无法修复,还可以用RDB来恢复数据,当然在持久化时对性能也会有影响。只使用RDB:在Redis当简单缓存,没有缓存也不会造成缓存雪崩的情况下可只使用RDB即可。单独使用AOF:不推荐,因为AOF对于数据的恢复载入比RDB慢,所以使用AOF的时候,最好还是有RDB作为备份。 阅读详情

什么是持久化?

   持久化就是将数据从容易丢失的内存同步到能够永久存储的设备上的过程

Redis为何需要持久化?

   由于 Redis做中间缓存,将数据存储在内存中容易丢失(服务器异常宕机,停电,redis服务异常停止)。造成数据丢失。

如果将数据备份保存在磁盘上,那么可以快速将数据恢复到redis中

 

如果同时配置RDB和AOF,那么优先 AOF

 

Redis的两种持久化方法:

   1.RDB(Redis Database)持久化(快照方式)

   RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。

    RDB持久化功能可以将 Redis 中所有数据生成快照并以二进行文件的形式保存到硬盘里,文件名为.RDB文件

在Redis启动时载入RDB文件,Redis读取RDB文件内容,还原服务器原有的数据库数据

 

   RDB持久化过程:

  手动触发:

   (1)save命令: 客户端向服务端发送SAVE命令,Redis会创建一个新的RDB文件,在执行SAVE命令过程中,由于是单线程,所以客户端发送的其他命令请求会被放置在队列中,等待命令处理完成,再处理其他命令。被废弃

  (2)bgsave命令:Redis进程执行fork操作创建子进程,RDB持久化过程由子进程负责,完成后自动结束。阻塞只发生在fork阶段,一般时间很短。

  1. 执行bgsave命令,Redis父进程判断当前是否存在正在执行的子进程,如果存在bgsave命令直接返回。
  2. 父进程fork完成后,bgsave命令返回“Background saving started”信息并不再阻塞父进程,可以继续响应其他命令。
  3. 子进程创建RDB文件,根据父进程内存生成临时快照文件,完成后对原有文件进行原子替换。
  4. 进程发送信号给父进程表示完成,父进程更新统计信息。

所以RDB是线程阻塞的

可以在redis.conf 中进行配置

(1)900秒中至少1个key发生变化,发送SAVE命令

(2)300秒 内至少10个key发生变化, 发送SAVE命令

(3)60 秒内如果至少有 10000 个 key 的值变化

stop-writes-on-bgsave-error yes  # 当启用了RDB且最后一次后台保存数据失败,Redis是否停止接收数据。
rdbcompression yes    # 对于存储到磁盘中的快照,可以设置是否进行压缩存储。
rdbchecksum yes       # 在存储快照后,我们还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗
dbfilename dump.rdb   # RDB文件名
dir ./                # 文件存放位置

 

优点:

   (1)RDB是一个紧凑压缩的二进制文件,代表Redis在某个时间点上的数据 快照。非常适用于备份,全量复制等场景。

   (2)·Redis加载RDB恢复数据远远快于AOF的方式。(由于是二进制)

   (3) Redis性能最大化,fork子进程来完成写操作,主进程继续处理命令。使用子进程进行持久化,保证redis高性能

缺点:

   (1)如果.rdb 文件过大,在恢复中可能会导致redis服务短时间停止服务

   (2)如果你想保证数据的高可用性,即最大限度的避免数据丢失,那么RDB将不是一个很好的选择。因为系统一旦在定时持久化之前出现宕机现象,此前没有来得及写入磁盘的数据都将丢失。

 

Question1: RDB在生成快照过程中Redis是否会对外停止服务?如果不会,如何处理新的请求?

   答:不会对外停止服务。

 当主进程收到  bgsave命令后,会fork一个子进程,子进程会共享主进程的 一部分内存空间 ,将其置为read-only,将这部分数据进行持久化。在持久化过程中,Redis也会接受新的命令【新接受的命令将会在下次进行持久化的时候写入文件】  触发  COW(copy on write)机制,不会影响子进程完成它的持久化,最后主进程对子进程进行回收。

 

 

  2.AOF(Append  Only  File)持久化(日志方式)

当向Redis中写入一条数据时,就向AOF文件中添加一条写记录

Redis发生宕机重启后,读取AOF文件对Redis中的数据进行完整的恢复,而且使用AOF文件来恢复Redis中的数据是实时的

 

AOF 3中触发机制

  redis.conf配置文件中

# appendfsync always     # 同步持久化 每次发生数据变更会被立即记录到磁盘 性能较差但数据完整性比较好
appendfsync everysec     # 异步操作,每秒记录 如果一秒内宕机,有数据丢失
# appendfsync no         # 不同步

 

优点:

(1)AOF可以更好的保护数据不丢失,一般AOF会每隔1秒,通过一个后台线程执行一次fsync操作,最多丢失1秒钟的数据。(2)AOF日志文件没有任何磁盘寻址的开销,写入性能非常高,文件不容易破损。

(3)AOF日志文件即使过大的时候,出现后台重写操作,也不会影响客户端的读写。

(4)AOF日志文件的命令通过非常可读的方式进行记录,这个特性非常适合做灾难性的误删除的紧急恢复。比如某人不小心用flushall命令清空了所有数据,只要这个时候后台rewrite还没有发生,那么就可以立即拷贝AOF文件,将最后一条flushall命令给删了,然后再将该AOF文件放回去,就可以通过恢复机制,自动恢复所有数据

缺点:

(1)对于同一份数据来说,AOF日志文件通常比RDB数据快照文件更大

(2)AOF开启后,支持的写QPS会比RDB支持的写QPS低,因为AOF一般会配置成每秒fsync一次日志文件,当然,每秒一次fsync,性能也还是很高的

(3)以前AOF发生过bug,就是通过AOF记录的日志,进行数据恢复的时候,没有恢复一模一样的数据出来。

(4)启动效率低        指令重写

 

AOF重写机制

   (1)为何重写?

前文所说,AOF是记录每次写命令,当写操作过多时,AOF文件变得就很大。为了解决这个问题,redis 引入了 aof 文件重写机制,以便压缩 aof 体积 ,更小的 aof 文件可以更快的被 redis 加载。

aof 文件重写是将 redis 中的数据转换为 写命令同步更新到 aof 文件的过程。

  • 父进程执行 fork 创建子进程

  • 父进程 fork 操作完毕之后,依然响应其他命令,所有修改命令依然写入 aof 缓冲区,并根据 appendfsync策略同步到硬盘,保证原有 aof 机制的有效性。

  • 由于 fork 操作采用写时复制技术,子进程只能共享fork 操作时的内存数据,由于父进程依然响应命令,redis 使用 aof 重写缓冲区 保存这部分新数据,防止aof文件生成期间这部分数据的丢失。

  • 子进程根据内存快照,按照命令合并规则写入到新的 aof 文件

  • 新 aof 文件 写入完成之后,子进程通知 父进程,父进程更新统计信息

  • 父进程把 aof 重写缓冲区的数据写入 新的 aof 文件

  • 使用 新 aof 文件替换 旧的 aof 文件

  (2)重写后为何文件会变小?

  • 清除了一些无效命令 例如: del srem
  • 进程内超时的数据不再写入 aof 文件
  • 多条写命令可以合并为批量写命令,例如:lpush list v1 lpush list v2 lpush list v3 合并为一条写入命令 lpush list v1 v2 v3
Android WLAN STA/AP 并发 Android 9 引入了可让设备同时在 STA 和 AP 模式下运行的功能。对于支持双频并发 (DBS) 的设备,此功能让一些新功能得以实现,例如在用户想要启用热点 (softAP) 时不会中断 STA WLAN。 阅读详情

相关推荐

Cocos Creator发布微信小游戏:深度定制与去除默认加载页面的实践指南

本文详细介绍了如何使用Cocos Creator发布微信小游戏时去除默认加载页面的实践方法。通过修改构建配置和重写启动逻辑,开发者可以自定义加载体验,提升品牌一致性。文章还提供了进阶优化方案和常见问题解决方案,帮助开发者实现更专业的微信小游戏发布流程。

weixin_27972919的博客 568

Quartz持久化到数据库后,一到执行时间,任务状态就变为ERROR的一系列解决过程...

Quartz项目上线后,项目应用和数据库(MYSQL)在同一台服务器上,然后经常是一个任务正常执行完之后,任务状态变为了ERROR,网上找了很多 1.有的说quartz版本2.1.7有问题,换版本就好了,但是我的工程不是2.1.7 版本,然后我把2.2.1-2.3.0都试了,一样的错 2.很奇怪我项目几乎每次跑都会报这个错,但是网上只有一个人提到过类似问题 转到本地跑正...

weixin_30487201的博客 1284

从RTL到GDSII:DC综合里那些没人告诉你的时钟约束冷知识(附真实工程示例)

本文深入探讨数字IC设计中DC综合阶段的时钟约束冷知识,包括无毛刺时钟切换、寄存器分频时钟约束、虚拟时钟应用等关键技巧。通过真实工程示例,揭示常见约束误区及解决方案,帮助工程师提升时序收敛效率。特别针对input_delay和output_delay在多时钟域场景下的设置陷阱提供实用指南。

weixin_29306317的博客 429

【Redis源码剖析】 - Redis持久化之RDB

原创作品,转载请标明:http://blog.youkuaiyun.com/xiejingfa/article/details/51553370 Redis源码剖析系列文章汇总:传送门 Redis是一个高效的内存数据库,所有的数据都存放在内存中。我们知道,内存中的信息会随着进程的退出或机器的宕机而消失。为此,Redis提供了两种持久化机制:RDB和AOF。这两种持久化方式的原理实际上就是把内存中所有数据的...

上善若水,人淡如菊 1万+

YOLO26涨点改进 | NeurIPS2025最佳论文!注意力改进篇| 引入Gated Attention门控注意力模块、太牛了!直接拯救了大模型的发展,助力目标检测、图像分割、图像分类有效涨点

本文提出了一种基于门控注意力机制(GatedAttention)的YOLO26模型改进方法。该方法在标准softmax注意力机制中引入头部特定的sigmoid门控,通过增强注意力机制使模型更聚焦于关键信息。实验表明,该模块能显著提升模型性能,特别是在复杂背景和密集目标场景中,同时减少无关区域关注并提高检测精度。门控机制引入的非线性和稀疏性不仅提升了推理效率,还改善了训练稳定性,使模型能采用更大学习率并增强扩展性。此外,该方法有效缓解了"注意力下沉"现象,增强了模型对长距离目标的感知能力。

Ai缝合怪、助力小伙伴高效发论文 652

机器人控制基础:电机编码器常见类型

电机编码器是测量电机位置、速度和方向的传感器,主要分为光电、磁性和旋转变压器三类。光电编码器精度高但需防尘,适用于伺服系统;磁性编码器耐环境性强,常用于汽车电机;旋转变压器适应极端环境,多用于军工领域。按信号类型可分为增量式(成本低)和绝对式(断电保留位置)。选型需综合考虑精度、环境适应性及成本。

start_up_go的博客 475

详解Redis之持久化

详解Redis持久化之RDB持久化和AOF持久化。

. 9420

8、Windows 部署ollama

一个本地运行大模型的集成框架,目前主要针对主流的LLaMA架构的开源大模型设计,通过将模型权重、配置文件和必要数据封装进由Modelfile定义的包中,从而实现大模型的下载、启动和本地运行的自动化部署及推理流程。此外,Ollama内置了一系列针对大模型运行和推理的优化策略,目前作为一个非常热门的大模型托管平台,已被包括LangChain、Taskweaver等在内的多个热门项目高度集成。

Andy_shenzl的博客 1131

[Redis] Redis数据持久化

我们之前在学习MySQL数据库的时候,我们学习过MySQL事务的四个比较核心的特性:分别是原子性(把对多个表的操作打包为一个操作),一致性(事务前后的数据都是合法数据,比如同一个操作中同时减少和增加一个值,要不同时成功,要不同时失败,不能出现中间状态),持久性(把数据存储在硬盘上),隔离性(脏读,不可重复读,幻读,串行化).

无需多言 2696

OpenClaw进阶实战(二十五):抖音企业号——私信回复与视频评论分析

摘要:本文介绍抖音企业号自动化运营方案,突破抖音强风控体系的技术挑战。针对内容生产、私信互动和账号矩阵三大场景,提出混合架构解决方案: 私信自动化:结合关键词触发与随机延迟(45秒±15),实现拟人化回复,支持价格咨询/商务合作等高优先级消息识别 混合技术栈:官方API(合规)+真机RPA(覆盖长尾需求)+AI辅助生成(脚本→剪辑→发布闭环) 安全策略:通过设备指纹模拟、行为间隔随机化和内容差异化处理规避风控,提供每日200条的安全操作阈值。配套OpenClaw技能实现一键部署,包含cookie配置、回复规

PeterPan的博客 142

EMB电子机械制动器夹紧力预估策略分析

本文探讨了电子机械制动器(EMB)夹紧力的四种预估方法:1)基于电机电流的方法简单经济但易受干扰;2)基于位置传感器的方法实时性好但依赖模型精度;3)直接力测量精度最高但成本较高;同时提出未来将结合AI和数字孪生技术提升预估精度。研究显示,准确的夹紧力预估对制动安全性、能效和舒适性至关重要,当前面临温度稳定性、参数漂移等技术挑战。随着智能算法的发展,EMB夹紧力预估将实现更高精度和可靠性。

m0_59012156的博客 850

Redis两种持久化方式

Redis两种持久化方式

水w的博客 1975

Figma 设计稿转前端代码:Cursor 实现 UI 还原的 4 种精准映射方法

揭示 Figma 设计稿转前端代码失效的根本原因在于四层语义未对齐(像素→布局、视觉→样式、交互→行为、意图→架构),提出以语义标注为核心的结构化喂数据方法,详解通过图层命名、Description 字段和 Markdown 上下文锚点实现高精度 React 组件生成,并给出可落地的避坑指南与实测提

weixin_42545292的博客 138

【Redis】持久化机制

Redis持久化

chaodddddd的博客 2584

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Redis的持久化

1.MySQL可以保证事务中的持久性,即只要事务提交,之后无论MySQL挂了还是服务器宕机,数据都不会丢失。 2.而Redis虽然也有持久化策略,但是它缺无法保证持久性,当Redis挂了,往往都会丢失一定的数据。 造成这两种的区别就是它们的持久化策略不同

tazj666的博客 1000

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

redis的持久化

Redis 的持久化机制主要是通过内部的方式来实现的,而不是直接将数据写入到外部数据库(如 MySQL)。下面将详细介绍 Redis 的默认持久化机制,以及如何通过编程的方式将 Redis 数据手动同步到 MySQL。

2301_76723322的博客 1543

精雕软件(JDpaint) 5.5 绿色版

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

Redis 之持久化

Redis提供了两个持久化数据的能力,RDB Snapshot 和 AOF(Append Only FIle)日志,RDB快照能够在指定的时间间隔内生成数据快照,而AOF日志则记录了所有的写操作命令。RDB做镜像全量持久化,AOF做增量持久化。 RDB全称Redis Database Backup file (Redis数据备份⽂件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。 当Redis实例故障重启后,从磁盘读取快照⽂件,恢复数据。这样一来即使

gorgor在码农 1384

【redis】redis持久化

两种持久化方式(1)RDB(Redis DataBase):内存中数据直接写入文件中(2)AOF(Append Of File):以追加的行为把内容写入文件中。

rita_0567的博客 1628

Redis 持久化

Redis持久化机制对比:RDB与AOF Redis提供两种持久化方式:RDB(快照)和AOF(日志)。RDB通过定期生成二进制快照文件实现备份,具有文件小、恢复快的特点,但可能丢失两次备份间的数据。AOF记录每个写操作,数据安全性更高,但文件体积较大。两者主要区别在于:RDB只保存fork时的内存状态,而AOF会额外缓存后续修改。实际应用中,Redis4.0引入混合持久化,结合两者优势,在AOF重写时先用RDB格式保存当前状态,再追加后续AOF日志。当两种文件同时存在时,Redis优先使用数据更完整的AO

2302_80192828的博客 1541

Redis --- Redis如何做持久化

Redis如何做持久化 一共三种 一、RDB(快照)持久化:保存某个时间点的全量数据快照 redis.conf save 60 1 代表Redis在60秒内写入一条数据那么进行快照 stop-writes-on-basave-error yes 代表当备份进程出错的时候,主进程就停止写入新的操作了。这样是为了保护持久化数据一致性的问题。 rdbcompression yes 表示...

xinbumi的博客 2万+

Redis持久化的方式

本文主要讲述了redis的rdb,aof持久化的原理流程和配置使用

sjhhshsh的博客 1951

Redis:持久化

讲解Redis的持久化,包括AOF,RDB,混合持久化

博客网站 https://async-area.com 1962
上一篇: Redis优化
下一篇: MySQL的四种事务隔离级别
error0318
博客等级 码龄9年 57粉丝 515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值