1. Redis持久化机制概述
Redis作为高性能的内存数据库,其数据默认存储在易失性内存中。这意味着一旦服务器重启或意外宕机,所有数据都将丢失。为了解决这个问题,Redis提供了两种主要的持久化机制:RDB(Redis Database)和AOF(Append Only File)。这两种方式各有特点,适用于不同的业务场景。
重要提示:生产环境中强烈建议至少启用一种持久化方式,否则服务器重启将导致所有数据丢失。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. RDB持久化详解
2.1 RDB工作原理
RDB通过创建数据快照来实现持久化。当触发保存条件时,Redis会fork一个子进程,将当前内存中的数据以二进制格式写入磁盘文件(默认名为dump.rdb)。这个过程采用写时复制(Copy-On-Write)技术,确保主进程可以继续处理请求。
bash复制# 手动触发RDB快照的命令
redis-cli bgsave
2.2 RDB触发方式
RDB支持三种触发机制:
-
手动触发:
SAVE:同步执行,会阻塞所有客户端请求BGSAVE:异步执行,通过fork子进程完成
-
自动触发:通过配置文件设置保存条件
conf复制save 900 1 # 900秒内至少有1个key发生变化 save 300 10 # 300秒内至少有10个key发生变化 save 60 10000 # 60秒内至少有10000个key发生变化 -
关闭时触发:正常关闭Redis服务时会自动执行一次RDB保存
2.3 RDB文件结构
RDB文件采用紧凑的二进制格式,主要包含以下部分:
- Redis头信息("REDIS"标识和版本号)
- 数据库编号
- 键值对数据(包括过期时间信息)
- EOF结束标记
- CRC64校验和(可选)
2.4 RDB优缺点分析
优点:
- 恢复速度快:二进制格式加载效率高
- 文件紧凑:适合备份和灾难恢复
- 对性能影响小:子进程完成持久化工作
缺点:
- 数据丢失风险:两次快照间的数据可能丢失
- fork可能阻塞:大数据集时fork操作耗时较长
- 版本兼容性问题:不同
