当前位置: 首页 > news >正文

Redis持久化存储

1、简介

Redis的高性能是由于其将所有数据都存储在了内存中为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化

Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将二者结合使用

2、RDB(定期快照式存储)

RDB方式的持久化是通过**快照**(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘。

RDB是Redis默认采用的持久化方式(主从复制的时候默认使用的为RDB)。

生成的文件通常是:

dump.rdb

工作原理

内存数据 → fork子进程 → 子进程写入RDB文件 → 替换旧文件

触发方式

自动触发

#1.自动触发(配置文件中设置) save9001#900秒内至少有1个key改变 save30010#300秒内至少有10个key改变 save6010000#60秒内至少有10000个key改变

含义:

  • 900 秒内有 1 次写 → 生成快照
  • 300 秒内有 10 次写
  • 60 秒内有 10000 次写

在redis.conf中:

  • 配置dir指定rdb快照文件的位置
  • 配置dbfilenam指定rdb快照文件的名称

手动触发

#2.手动触发 redis-cli>SAVE # 同步保存,阻塞其他操作 redis-cli>BGSAVE # 后台异步保存(推荐)

RDB 优缺点

优点

  • ✅ 文件紧凑,适合备份和灾难恢复
  • ✅ 恢复大数据集时速度比AOF快
  • ✅ 最大化Redis性能(父进程无需磁盘IO)
  • ✅ 支持子进程写时复制(Copy-On-Write)(不阻塞线程主从复制的时候会遗漏一部分,最后通过offset补齐)

缺点

  • ❌ 可能丢失最后一次快照后的数据
  • ❌ fork子进程时,内存占用翻倍
  • ❌ 大数据集时fork可能耗时较长

3、AOF(追加日志是存储)

工作原理

默认情况下Redis没有开启AOF(append only file)方式的持久化,可以通过appendonly参数开启:

appendonly yes

开启AOF持久化后每执行一条会更改Redis中的数据的命令,Redis就会将该命令写入硬盘中的AOF文件。AOF文件的保存位置和RDB文件的位置相同,都是通过dir参数设置的,默认的文件名是appendonly.aof,可以通过appendfilename参数修改:appendfilename appendonly.aof

AOF的工作流程:

  • **命令追加(append):**所有的写命令会追加到 AOF 缓冲区中。
  • **文件写入(write):**将 AOF 缓冲区的数据写入到 AOF 文件中。注意!!!此时并没有同步到磁盘。
  • **文件同步(fsync):**fsync 将阻塞直到写入磁盘完成后返回,保证了数据持久化。
  • **文件重写(rewrite):**随着 AOF 文件越来越大,需要定期对 AOF 文件进行重写,达到压缩的目的。
  • **重启加载(load):**当 Redis 重启时,可以加载 AOF 文件进行数据恢复

AOF 重写机制

# 解决AOF文件过大的问题 # 通过重写创建当前数据集的最小命令集合 # 触发重写: auto-aof-rewrite-percentage100# 文件增长100%时重写 auto-aof-rewrite-min-size64mb # 最小64MB才重写 # 手动重写: redis-cli>BGREWRITEAOF

AOF 同步策略

# redis.conf 配置 appendonly yes # 开启AOF appendfilename"appendonly.aof"# AOF文件名 # 同步策略(重要!) appendfsync always # 每个写命令都同步,最安全但性能差 appendfsync everysec # 每秒同步一次(推荐,平衡安全与性能) appendfsync no # 由操作系统决定,最快但可能丢失数据
策略数据安全性能
always最安全最慢
everysec较安全推荐
no风险高最快

AOF 配置详解

# redis.conf 完整AOF配置 appendonly yes appendfilename"appendonly.aof"appendfsync everysec # AOF重写配置 no-appendfsync-on-rewrite no # 重写时是否停止fsync auto-aof-rewrite-percentage100auto-aof-rewrite-min-size64mb # 加载时处理损坏的AOF aof-load-truncated yes # 加载截断的AOF文件 aof-use-rdb-preamble yes # 混合持久化(Redis4.0+

AOF 优缺点

优点

  • ✅ 数据安全性更高(最多丢失1秒数据)
  • ✅ 可读的日志文件,便于分析
  • ✅ 仅追加写入,无磁盘寻址开销
  • ✅ 支持后台重写,不影响客户端

缺点

  • ❌ 文件体积通常比RDB大
  • ❌ 恢复速度比RDB慢
  • ❌ 性能略低于RDB(取决于fsync策略)
  • ❌ 可能遇到AOF重写bug

4、混合使用(RDB+AOF)

Redis支持两者同时开启

工作原理

BGREWRITEAOF → 先写RDB快照到AOF文件 → 追加期间的AOF命令

不同场景推荐

#1.数据安全最重要 appendonly yes appendfsync always # 或 appendfsync everysec+频繁的RDB备份 #2.性能最重要 appendonly no save9001# 较少的RDB备份 #3.内存有限,需要快速重启 appendonly no dbfilename dump.rdb rdbcompression yes #4.推荐的生产配置(平衡型) appendonly yes appendfsync everysec auto-aof-rewrite-percentage100auto-aof-rewrite-min-size64mb save9001save30010save6010000
  • 优先使用AOF 恢复数据
  • RDB 作为备份手段

👉这是生产环境的推荐方案。

#4.推荐的生产配置(平衡型) appendonly yes appendfsync everysec auto-aof-rewrite-percentage100auto-aof-rewrite-min-size64mb save9001save30010save6010000

http://www.jsqmd.com/news/327399/

相关文章:

  • 基于图神经网络的谣言检测研究-GNN-大数据深度学习算法毕设毕业设计项目Flask
  • 物理实验中的数据共享:AI应用架构师用联邦学习实现跨实验室协作
  • 【课程设计/毕业设计】基于Java web的电影院选票系统基于Java web的电影院选票选座系统【附源码、数据库、万字文档】
  • 大数据领域Hive的数据清洗与预处理技巧
  • Java毕设项目:基于springboot+bs架构的文献搜索系统的设计与实现(源码+文档,讲解、调试运行,定制等)
  • Java计算机毕设之基于SpringBoot+Vue电影院订票选座系统基于Java web的电影院选票系统(完整前后端代码+说明文档+LW,调试定制等)
  • Java语言提供了八种基本类型。六种数字类型【函数我不懂啊】
  • 【毕业设计】基于springboot+bs架构的文献搜索系统的设计与实现(源码+文档+远程调试,全bao定制等)
  • 使用有向莱顿算法进行供应链/物料流转网络的集群划分
  • 【毕业设计】基于Java web的电影院选票系统(源码+文档+远程调试,全bao定制等)
  • Elasticsearch 搜索性能优化实战指南(生产级)
  • 【计算机毕业设计案例】基于Java web的电影院选票系统基于SpringBoot+Vue电影院订票选座系统(程序+文档+讲解+定制)
  • [特殊字符]_高并发场景下的框架选择:从性能数据看技术决策[20260131142749]
  • [特殊字符]️_开发效率与运行性能的平衡艺术[20260131142015]
  • 【计算机毕业设计案例】基于SpringBoot+Vue在线文献检索系统设计与实基于springboot+bs架构的文献搜索系统的设计与实现基于BS模式文献搜索系统的设计与实现(程序+文档+讲解+定制)
  • 长沙不拼速度拼“厚度”
  • ⚡_延迟优化实战:从毫秒到微秒的性能突破[20260131141242]
  • 《碳硅合抱共生文明》第一卷:文明交汇——起源与哲学基础
  • AngularJS 事件处理详解
  • 手把手教你调出“懂你”的AI:大模型微调实战与资源管理
  • 苹果电脑为什么不能把文件拷贝到u盘?MacBook无法拷贝文件到U盘/硬盘的超全解决方法
  • Excel众数函数MODE全解析:从基础统计到多众数提取实战
  • Git 基本操作
  • 网站主机提供商:如何选择最适合您的服务
  • LeetCode经典算法面试题 #98:验证二叉搜索树(递归法、迭代法等五种实现方案详解)
  • 深入解析:动态规划的“升维”之技:二维前缀和,让矩阵查询“降维打击”
  • [嵌入式系统-180]:PLC运动控制 VS 运动控制卡
  • 彼得林奇如何看待公司的市场定位
  • 2025年智能问答系统演进:从关键词匹配到语义理解的跨越 - 教程
  • 学习1