*Redis BGSAVE 命令

后台执行 RDB 快照保存。通过 fork 子进程完成,不阻塞主线程。


*语法

BGSAVE [SCHEDULE]

*参数说明

参数 类型 必填 说明
SCHEDULE 标志 如果正在执行 AOF 重写,则调度保存(Redis 3.2+)

*返回值

条件 返回值
后台保存启动 Background saving started
已有一个 BGSAVE 在执行 Background saving already in progress

*时间复杂度

O(N),N 为 key 数量。但主线程不阻塞,只有 fork 瞬间有短暂阻塞。


*示例

> BGSAVE
Background saving started

> LASTSAVE
(integer) 1717000000

*常见错误

  1. fork 失败:内存不足或操作系统限制导致 fork 失败。

*最佳实践

  1. 定期备份:配置 save 规则自动触发 BGSAVE,或定时任务手动触发。
  2. 持久化策略:RDB + AOF 同时开启,RDB 用于快速恢复,AOF 用于数据完整性。

*FAQ

Q: BGSAVE 会阻塞 Redis 吗? A: fork 瞬间有微秒级阻塞,但总体不阻塞主线程。子进程负责写 RDB 文件。

Q: BGSAVE 和 AOF 重写可以同时执行吗? A: 可以,但 Redis 会调度避免同时执行大量 I/O。