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)

相关推荐
weixin_461408583 小时前
Mybatis-flex小记
java·开发语言·mybatis
接着奏乐接着舞。6 小时前
【2026】73道Redis 常见面试题与参考答案
数据库·redis·后端·缓存
ApacheSeaTunnel10 小时前
用 Apache SeaTunnel 同步 DynamoDB 到 Redis,一个配置文件就够
redis·开源·seatunnel·数据同步·dynamodb
SQL-First布道者10 小时前
⚡Spring JDBC 完整体系 · 第 10 集 · 手搓 `BaseCondition`
java·spring boot·后端·spring·mybatis·spring jdbc
南城以南溫暖如初14711 小时前
社交裂变商城系统设计与实战开发指南
java·spring boot·mysql·vue·mybatis
南城以南溫暖如初14711 小时前
分享返现商城系统开发实战:技术架构与运营经验指南
java·spring boot·mysql·架构·vue·mybatis
南城以南溫暖如初14712 小时前
社群电商实战指南:从零搭建高转化社区的技术架构
java·spring boot·mysql·系统架构·vue·mybatis
南城以南溫暖如初14712 小时前
会员返利商城系统开发实战:架构设计与实现指南
java·spring boot·mysql·vue·mybatis
MetaLite13 小时前
SpringBoot防重复提交-加一把Redis锁就够吗
spring boot·redis·后端
草莓熊Lotso2 天前
【Redis 初阶】Set 类型深度解析:去重集合的运算能力与实战场景
linux·网络·数据库·windows·redis·tcp/ip·缓存