Redis 从入门到精通(十一):持久化配置

系列导读:本篇将深入讲解 Redis 持久化机制,包括 RDB 和 AOF 两种方式。


文章目录

    • 一、持久化概述
      • [1.1 为什么需要持久化?](#1.1 为什么需要持久化?)
      • [1.2 持久化方式对比](#1.2 持久化方式对比)
    • [二、RDB 持久化](#二、RDB 持久化)
      • [2.1 配置方式](#2.1 配置方式)
      • [2.2 手动触发](#2.2 手动触发)
      • [2.3 RDB 文件结构](#2.3 RDB 文件结构)
    • [三、AOF 持久化](#三、AOF 持久化)
      • [3.1 配置方式](#3.1 配置方式)
      • [3.2 AOF 重写](#3.2 AOF 重写)
      • [3.3 AOF 文件修复](#3.3 AOF 文件修复)
    • 四、混合持久化
      • [4.1 配置方式](#4.1 配置方式)
      • [4.2 混合持久化原理](#4.2 混合持久化原理)
    • 总结

一、持久化概述

1.1 为什么需要持久化?

复制代码
Redis 数据存储在内存中
    ↓
服务器重启/断电
    ↓
内存数据丢失
    ↓
需要持久化到磁盘恢复数据

1.2 持久化方式对比

方式 说明 优点 缺点
RDB 快照 文件小、恢复快 可能丢失数据
AOF 日志追加 数据完整 文件大、恢复慢
混合 RDB+AOF 兼具优点 配置复杂

二、RDB 持久化

2.1 配置方式

conf 复制代码
# redis.conf

# 快照条件
save 900 1      # 900秒内至少1个key变化
save 300 10     # 300秒内至少10个key变化
save 60 10000   # 60秒内至少10000个key变化

# RDB文件名
dbfilename dump.rdb

# 存储目录
dir /var/lib/redis

# 压缩
rdbcompression yes

# 校验
rdbchecksum yes

2.2 手动触发

bash 复制代码
# 同步保存(阻塞)
SAVE

# 异步保存(推荐)
BGSAVE

# 查看最后保存时间
LASTSAVE

2.3 RDB 文件结构

复制代码
┌─────────────────────────────────────────┐
│              RDB 文件结构                │
├─────────────────────────────────────────┤
│  REDIS      (5字节) - 魔数              │
│  版本号     (4字节)                      │
│  数据库数据                                │
│  EOF        (1字节) - 结束标志           │
│  校验和     (8字节)                      │
└─────────────────────────────────────────┘

三、AOF 持久化

3.1 配置方式

conf 复制代码
# redis.conf

# 启用AOF
appendonly yes

# AOF文件名
appendfilename "appendonly.aof"

# 同步策略
appendfsync always     # 每次写入都同步(最安全,最慢)
appendfsync everysec   # 每秒同步(推荐)
appendfsync no         # 由操作系统决定(最快,不安全)

# 重写配置
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

3.2 AOF 重写

bash 复制代码
# 手动触发重写
BGREWRITEAOF

# 重写原理
# 原AOF: SET a 1; SET a 2; SET a 3; INCR a; INCR a
# 重写后: SET a 5

3.3 AOF 文件修复

bash 复制代码
# 检查AOF文件
redis-check-aof appendonly.aof

# 修复AOF文件
redis-check-aof --fix appendonly.aof

四、混合持久化

4.1 配置方式

conf 复制代码
# redis.conf (Redis 4.0+)

# 启用AOF
appendonly yes

# 启用混合持久化
aof-use-rdb-preamble yes

4.2 混合持久化原理

复制代码
┌─────────────────────────────────────────┐
│           混合AOF文件结构                │
├─────────────────────────────────────────┤
│  RDB格式数据(基础数据)                 │
│  AOF格式数据(增量数据)                 │
└─────────────────────────────────────────┘

优点:RDB恢复快 + AOF数据完整

总结

本文我们学习了:

RDB持久化 :快照方式,文件小,恢复快

AOF持久化 :日志追加,数据完整

混合持久化 :结合两者优点

配置选择:根据业务需求选择

下篇预告Redis 从入门到精通(十二):主从复制


作者 :刘~浪地球
系列 :Redis 从入门到精通(十一)

**> 更新时间:2026-04-07

相关推荐
minji...1 天前
MySQL数据库 (五) MySQL表的约束(上),非空约束,默认值约束,零填充约束,主键约束,符合主键
数据库·mysql·表的约束·主键约束·非空约束·复合主键·零填充约束
拾贰_C1 天前
【python | installation 】python 安装 | Windows | 命令使用
linux·数据库·ubuntu
贺今宵1 天前
Vue 3 + Capacitor 使用jeep-sqlite,web端使用本地sqlite数据库
前端·数据库·vue.js·sqlite·web
列星随旋1 天前
MySQL面经整理
数据库·mysql
AllData公司负责人1 天前
大模型赋能AllData数据中台,系列升级|通过联合智谱大模型与Chat2DB开源项目,建设Text2SQL生产场景全新体验的数据源平台!
数据库·人工智能·text2sql·数据中台·数据源·chat2db·智谱大模型
minji...1 天前
MySQL数据库 (四) MySQL的数据类型,tinyint,float,decimal,枚举enum和集合set
数据库·mysql·tinyint·enum·decimal·varchar·bit
阿演1 天前
DataDjinn 新版本更新:国产数据库支持、连接树体验、AI 查询和表格编辑继续增强
数据库·人工智能·ai·ai编程
一只fish1 天前
Oracle官方文档翻译《Database Concepts 26ai》附录-术语表
数据库·oracle
一只fish1 天前
Oracle官方文档翻译《Database Concepts 26ai》第23章-数据库开发者概念
数据库·oracle
todoitbo1 天前
从 MySQL 到 KingbaseES:Database、Schema、User 一次讲透
数据库·mysql·国产数据库·kingbasees