redis 如何持久化

Redis 持久化机制详解

Redis 提供三种主要的持久化方式,确保在重启或故障时数据不丢失:

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

核心原理

  • 定时生成内存数据的二进制快照
  • 将某一时刻的数据集保存到磁盘上的 .rdb 文件

触发机制

方式 命令/配置 特点
手动触发 SAVE 阻塞式保存,生产环境慎用
后台触发 BGSAVE 创建子进程执行,不阻塞主线程
自动触发 配置文件规则 save 900 1(15分钟至少1次修改)

配置示例(redis.conf)

conf复制代码

复制代码
save 900 1        # 15分钟内至少1个key变化
save 300 10       # 5分钟内至少10个key变化
save 60 10000     # 1分钟内至少10000个key变化

dbfilename dump.rdb  # RDB文件名
dir ./               # 保存路径

优点

  • 紧凑的二进制格式,文件小
  • 恢复速度快(适合大规模数据)
  • 最大化Redis性能(子进程处理)

缺点

  • 可能丢失最后一次快照后的数据
  • 大数据量时fork子进程可能阻塞服务

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

核心原理

  • 记录所有写操作命令(类似MySQL binlog)
  • 命令以Redis协议格式追加到文件末尾

工作流程

同步策略

策略 命令 数据安全 性能
always appendfsync always 最高(每条命令同步) 最低
everysec appendfsync everysec 中等(每秒同步) 平衡(默认)
no appendfsync no 最低(OS决定) 最高

AOF重写机制

  • 解决AOF文件膨胀问题
  • 创建当前数据集的最小命令集
  • 触发方式:
    • 手动:BGREWRITEAOF
    • 自动:auto-aof-rewrite-percentage 100 + auto-aof-rewrite-min-size 64mb

配置示例

conf复制代码

复制代码
appendonly yes               # 启用AOF
appendfilename "appendonly.aof" 
appendfsync everysec         # 推荐配置
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

优点

  • 数据安全更高(最多丢失1秒数据)
  • 可读性好(Redis协议文本)
  • 意外宕机恢复更可靠

缺点

  • 文件体积通常比RDB大
  • 恢复速度较慢
  • 对性能影响稍高于RDB

3. 混合持久化(Redis 4.0+)

最佳实践方案

  • 结合RDB和AOF优势
  • 生成包含RDB格式 + 增量AOF命令的文件

工作流程

  1. 使用BGSAVE创建RDB快照
  2. 后续命令写入AOF缓冲区
  3. 重写时生成RDB头 + AOF尾的混合文件

配置

conf复制代码

复制代码
aof-use-rdb-preamble yes  # 启用混合模式

优势

  • 快速加载(RDB部分)
  • 数据完整性(AOF部分)
  • 文件更紧凑

持久化方案选择指南

场景 推荐方案 说明
数据备份 RDB 文件小,恢复快
高数据安全 AOF everysec 最多丢失1秒数据
生产环境 混合持久化 最佳平衡方案
缓存服务 关闭持久化 纯缓存场景

数据恢复优先级

Redis重启时按以下顺序恢复数据:

  1. 只使用AOF文件(如果启用)
  2. 使用RDB文件(如果未启用AOF)
  3. 混合持久化文件(优先加载RDB部分)

运维技巧

  1. 禁用透明大页 :防止fork延迟

    bash复制代码

    复制代码
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
  2. 监控持久化状态

    bash复制代码

    复制代码
    redis-cli info persistence
  3. 灾难恢复测试:定期验证备份文件有效性

  4. 多数据中心备份:异地保存RDB/AOF文件

⚠️ 重要提示:持久化不能替代备份!仍需定期将RDB/AOF文件复制到异地安全存储。

相关推荐
这个DBA有点耶1 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G1 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备1 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远1 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
IT大白鼠2 天前
Redis 系列 · 第 01 篇——认知入门:Redis 是什么
redis·nosql
彧azz2 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
2601_962218612 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
全栈弄潮儿²⁰²⁴2 天前
AI Agent 开发实战(30):限流、缓存与成本控制
人工智能·gpt·缓存·agent·限流·agi·成本控制
张洛闻Eren2 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安2 天前
MySQL-触发器
数据库·mysql