6 持久化

目录

[6 持久化](#6 持久化)

[6.1 概述](#6.1 概述)

[6.2 RDB 持久化](#6.2 RDB 持久化)

存储路径

文件名

[6.3 AOF 持久化](#6.3 AOF 持久化)

存储路径

文件名


6 持久化

6.1 概述

  1. redis高性能的原因
    所有数据都存储在了内存中
  2. 持久化
    内存数据易失性(服务重启 / 宕机会丢失全部数据),因此需要将内存数据同步到硬盘,该过程即为Redis 持久化。
  3. 持久化的方式
    Redis 支持两种持久化方案,可单独使用,也可结合使用(生产环境常结合):
  • RDB 方式
  • AOF 方式

|--------|----------------------------|----------------------------------------------------------|
| 对比维度 | RDB(默认持久化) | AOF(默认关闭) |
| 核心实现原理 | 满足触发条件,对内存 全量数据生成快照 | 每执行写命令, 增量追加命令文本 到文件 |
| 默认开启状态 | 开启(无需手动配置) | 关闭(需配置 appendonly yes 开启) |
| 数据记录形式 | 二进制快照文件(记录 某一时刻全量数据 ) | 文本命令文件(记录 所有修改操作过程 ) |
| 文件相关配置 | 路径 dir 、文件名 dbfilename | 路径 dir (与 RDB 共用)、文件名 appendfilename (默认 appendonly.aof) |
| 数据丢失风险 | 较高,丢失 最后一次快照后 的所有修改数据 | 较低,仅丢失少量(可通过策略优化) |
| 数据恢复逻辑 | 启动时 全量载入 快照文件到内存 | 启动时逐行解析命令, 重新执行还原数据 |
| 恢复速度 | 较快(二进制直接加载,1GB 约 20~30 秒) | 较慢(命令解析执行,文件越大耗时越长) |

6.2 RDB 持久化

  1. 工作方式
    通过快照(snapshotting) 实现,当满足配置的触发条件时,Redis 自动将内存全量数据(指某一时刻 Redis 内存中所有的键值对数据)生成快照,持久化到硬盘中。是 Redis 默认的持久化方式。
  2. 核心配置
    在redis.conf中配置。
  • 触发条件

    save 秒数 键更改数量

多条件为或关系。
默认配置:

save 900 1:900 秒(15 分钟)内至少 1 个键被修改,触发快照
save 300 10:300 秒(5 分钟)内至少 10 个键被修改,触发快照
save 60 10000:60 秒内至少 10000 个键被修改,触发快照

  • 文件配置
存储路径

dir:指定 RDB 快照文件的存储路径
默认配置是dir ./ ,./指的是启动redis时所在的工作目录。


比如,我在/usr/local/redis 目录下启动 Redis 时,dir ./ 这个配置里的 ./ 就会指向当前的工作目录 /usr/local/redis,所以生成的 dump.rdb 和 appendonly.aof 就会直接出现在 bin 目录下。

文件名

dbfilename:指定 RDB 快照文件的名称

  1. 数据恢复
    Redis 启动时,自动读取 RDB 快照文件,将硬盘数据全量载入(指全部载入)到内存;
  • 载入速度:
    1GB 快照文件(约 1000 万字符串键),耗时 20~30 秒(面试可提及该参考值);
    速度受数据量、数据结构、服务器性能影响。
  1. 缺点
    若 Redis异常退出(如宕机、进程被杀),会丢失最后一次快照后所有的修改数据;
    解决方案:按需组合配置快照条件,控制数据损失在可接受范围;
    若要求数据零丢失,需搭配 / 替换为 AOF 持久化。

6.3 AOF 持久化

  1. 工作方式
    每执行一条修改数据的写命令(如 set、hset、del 等),Redis 都会将该命令以文本形式追加写入到硬盘中的 AOF 文件,实现持久化。
    AOF(Append Only File,追加仅文件)持久化,默认不开启。
  2. 核心配置
    在redis.conf中配置。
  • 开启 AOF
    配置 appendonly yes(默认值为 no,需手动修改开启)
  • 文件配置
存储路径

AOF 的文件路径与 RDB 共用dir配置,由 dir 参数指定(无需额外单独配置)。

文件名

默认 appendonly.aof,可通过 appendfilename 参数修改(例:appendfilename my_redis.aof)

相关推荐
IT大白鼠1 天前
Redis 系列 · 第 01 篇——认知入门:Redis 是什么
redis·nosql
彧azz1 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
lbb 小魔仙1 天前
OpenClaw + cpolar 实战:远程 NAS、分享小游戏、RDP,再配置公网 AI 入口
数据库·人工智能·redis·oracle·prometheus
夕除1 天前
redis--018
redis
两锭子1 天前
Redis基础
redis
烟沙九洲1 天前
Redis 缓存穿透、缓存击穿、缓存雪崩
数据库·redis
字节探索1 天前
Redis 只会当缓存用?这 10 大实战场景,让你的系统快到飞起
redis·后端
于樱花森上飞舞1 天前
【Redis】哨兵详解
java·开发语言·数据库·redis
Rain的Java大神之路2 天前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
Wang's Blog2 天前
Java 接入Redis: 通用命令与键管理
java·服务器·redis