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

相关推荐
Irene19911 天前
Oracle 聚合函数 vs 窗口函数 对比总结(书写顺序与执行顺序示例)
数据库
weixin_381288181 天前
HTML5中Noscript标签在脚本禁用环境下的补救
jvm·数据库·python
S1998_1997111609•X1 天前
k:file/~*…/code/*iOS/an/app-/log in/ext./-system.API/-(NFV)=sdk.
数据库·网络协议·百度·微信·ssh
其实防守也摸鱼1 天前
网络安全与数据库运维核心知识点总结(附习题)
运维·网络·数据库·笔记·安全·web安全
2401_837163891 天前
PHP怎么写API接口_RESTful API基础写法介绍【介绍】
jvm·数据库·python
qq_413502021 天前
PHP跨平台部署AI应用_Docker容器化方案【教程】
jvm·数据库·python
倔强的石头1061 天前
kingbase备份与恢复实战(五)—— PITR时间点恢复:恢复到误操作前一分钟(归档WAL)
数据库·备份与恢复
2401_832365521 天前
HTML怎么区分正文与广告_HTML aside与广告位语义【技巧】
jvm·数据库·python
jnrjian1 天前
SQL太长导致 library cache lock 长期持有 造成系统hang住
数据库·sql
南棱笑笑生1 天前
20260427给万象奥科的开发板HD-RK3576-PI适配瑞芯微原厂的Android14时增加ll命令
数据库·rockchip