Redis 的数据主要放在内存里,持久化要解决的是重启后如何恢复。AOF 和 RDB 保存的东西不同,恢复过程也不同。 AOF 保存写入命令。Redis 先… · @BaiBtw · TwKit
@BaiBtw
Redis 的数据主要放在内存里,持久化要解决的是重启后如何恢复。AOF 和 RDB 保存的东西不同,恢复过程也不同。 AOF 保存写入命令。Redis 先执行命令、修改内存,再把相应命令追加到日志。恢复时通过重放日志重建数据;需要重放的内容越多,恢复通常越耗时。 RDB 保存某个时刻的数据快照。恢复时直接加载快照,不必逐条重放此前的全部命令。后台生成快照时,主进程 fork 出子进程,由子进程把数据写入文件;期间发生修改,会通过写时复制保留快照所需的数据视图,让新写入与快照生成可以并行进行。 两种方式也可以结合:用快照保存已有状态,再用增量命令补上后续变化。快照负责缩短需要重放的历史,日志负责记录快照之后的写入。这里的“后台执行”不等于完全没有开销,恢复能保留到哪个时间点,也取决于实际的持久化配置。
曝光 131 · 评论 3 · 点赞 2 · 书签 0
查看原帖