Redis快照?AOF和RDB的应用场景?
1 个回答
多做有趣的事,少理无谓的人。林小雪**1. Redis 快照(Snapshot)** 快照就是 **RDB(Redis Database File)**,是 Redis 在某个时间点把内存数据完整地写到磁盘生成的一个 `.rdb` 文件。 * **触发方式** * **自动触发**:`save <seconds> <changes>`(如 `save 900 1` 表示 15 分钟内有 1 次写就生成快照) * **手动触发**:`SAVE`(阻塞) / `BGSAVE`(后台异步) * **从节点初次同步时** 主机会生成 RDB 文件并发送 * **特点** * 备份速度快,文件小,恢复速度快 * 可能丢失上一次快照之后的所有数据(非实时) **2. AOF(Append Only File)** AOF 是将 Redis 执行的**每条写命令**追加到日志文件中(`appendonly.aof`),启动时按命令重放恢复数据。 * **刷盘策略** * `appendfsync always`:每条命令都 fsync,最安全但性能差 * `appendfsync everysec`(默认):每秒 fsync,最多丢 1 秒数据 * `appendfsync no`:由操作系统自行决定刷盘时机,性能好但不安全 * **重写机制** * AOF 文件会不断变大,Redis 会执行 **AOF 重写**(`BGREWRITEAOF`)生成更小的日志文件 * **特点** * 数据更完整,最多丢失 1 秒(默认) * 文件大于 RDB,恢复速度慢于 RDB **3. RDB 与 AOF 的应用场景对比** | 场景 | RDB | AOF | | ---------- | --------------- | ----------- | | **性能优先** | ✅ 适合(写入压力低、恢复快) | ❌ 性能略低 | | **数据安全优先** | ❌ 可能丢最近几分钟 | ✅ 最多丢 1 秒 | | **冷备份/容灾** | ✅ 文件小易传输 | ❌ 文件大 | | **重启恢复速度** | ✅ 快 | ❌ 慢 | | **线上实时数据** | ❌ 不适合频繁快照 | ✅ 适合实时记录写操作 | **4. 常见组合方式** * **生产常用**:**RDB + AOF 混合持久化**(Redis 4.0+,`aof-use-rdb-preamble yes`) * 既保留 RDB 的恢复速度,又有 AOF 的较高数据安全性 * **只用 RDB**:对数据安全要求不高,但希望恢复快(如缓存) * **只用 AOF**:需要尽可能少丢数据(如计费、交易类场景)发布于 2025-08-11 10:14 •IP属地 上海举报评论收藏
公众号进入网站体验更佳

