1. Redis持久化机制概述
Redis作为高性能的内存数据库,其数据默认存储在内存中。这意味着一旦服务器重启或崩溃,所有数据都将丢失。为了解决这个问题,Redis提供了两种主要的持久化机制:RDB(Redis Database)和AOF(Append Only File)。这两种方式各有特点,适用于不同的业务场景。
RDB持久化通过创建数据快照来实现持久化。它会定期将内存中的数据以二进制格式保存到磁盘上的RDB文件中。这种方式的优点是文件紧凑、恢复速度快,特别适合大规模数据备份和灾难恢复场景。但缺点是可能会丢失最后一次快照之后的所有数据。
AOF持久化则记录每个写操作命令,将这些命令追加到文件末尾。当Redis重启时,会重新执行这些命令来重建数据集。AOF的优点是数据安全性高,通常最多只会丢失1秒的数据(如果配置为每秒同步)。缺点是文件体积较大,且恢复速度比RDB慢。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. RDB持久化深入解析
2.1 RDB工作原理
RDB持久化的核心是创建数据快照。Redis使用fork()系统调用创建子进程来完成这个工作。父进程继续处理客户端请求,而子进程负责将内存数据写入临时RDB文件。写入完成后,用临时文件替换旧的RDB文件。
这种设计有几个关键优势:
- 使用子进程避免阻塞主线程
- 写时复制(Copy-on-Write)技术最小化内存开销
- 二进制格式紧凑高效
2.2 RDB配置参数
在redis.conf配置文件中,与RDB相关的主要参数包括:
code复制save 900 1 # 900秒(15分钟)内至少有1个key被修改时触发保存
save 300 10 # 300秒(5分钟)内至少有10个key被修改时触发保存
save 60 10000 # 60秒内至少有10000个key被修改时触发保存
stop-writes-on-bgsave-error yes # 当后台保存出错时停止写入
rdbcompression yes # 对RDB文件进行压缩
rdbchecksum yes # 对RDB文件进行校验
dbfilename dump.rdb # RDB文件名
dir ./
