xv6虚拟内存那些‘坑’:walk、mappages函数里的边界条件与panic处理全解析
2026/3/29 9:06:22
Redis 被称为“内存数据库”,很多初学者都会有疑问:
Redis 重启后,数据还在吗?
答案是:
👉取决于你是否开启了持久化,以及使用哪种方式。
Redis 提供了两种核心持久化机制:
它们分别从性能和数据安全两个方向解决问题。
RDB 的核心思想是:
在某一时刻,把 Redis 内存中的数据完整地保存为一个快照文件。
生成的文件通常是:
dump.rdbRDB 可以通过多种方式触发:
save 900 1 save 300 10 save 60 10000含义:
SAVE# 阻塞BGSAVE# 后台(推荐)fork子进程.rdb文件AOF 的核心思想是:
把每一次写命令,按顺序追加到日志文件中。
文件通常是:
appendonly.aofAOF 持久化功能的实现可以简单分为 5 步:
<font style="color:rgb(60, 60, 67);">fsync</font>将阻塞直到写入磁盘完成后返回,保证了数据持久化。appendonly yesappendfsync always appendfsync everysec appendfsync no| 策略 | 数据安全 | 性能 |
|---|---|---|
| always | 最安全 | 最慢 |
| everysec | 较安全 | 推荐 |
| no | 风险高 | 最快 |
随着时间推移,AOF 会越来越大,因此 Redis 提供AOF 重写机制:
用最少的命令,重建当前数据状态。
触发方式:
BGREWRITEAOF| 维度 | RDB | AOF |
|---|---|---|
| 持久化方式 | 快照 | 日志 |
| 数据安全 | 较低 | 较高 |
| 性能影响 | 小 | 较大 |
| 文件体积 | 小 | 大 |
| 恢复速度 | 快 | 慢 |
| 适用场景 | 备份 | 高可靠 |
Redis支持两者同时开启:
save ... appendonly yes启动时:
👉这是生产环境的推荐方案。
everysecauto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mbAOF 一定比 RDB 安全。
实际上:
appendfsync no风险很高Redis 的持久化,本质是性能与数据安全的权衡:
Redis持久化机制详解
文中图片来自《Redis开发与运维》