Redis 持久化高效实现指南
一 核心机制与取舍
二 高效配置建议
save 900 1、save 300 10、save 60 10000(时间/修改次数满足即触发 BGSAVE)。rdbcompression yes(节省空间、增 CPU)、rdbchecksum yes(CRC64 校验、增约**10%**开销,建议开启)。stop-writes-on-bgsave-error yes(持久化异常时停止写入,便于及时告警与修复)。appendfsync everysec(性能与持久化的通用折中)。auto-aof-rewrite-percentage 100、auto-aof-rewrite-min-size 64mb;高写入可适当降低阈值、低写入提高阈值以减少重写次数。no-appendfsync-on-rewrite yes 可减少重写期间主线程 fsync 等待,但极端情况下可能多丢约30秒数据(Linux 默认配置),需结合业务容忍度选择。aof-use-rdb-preamble yes,可显著加快 AOF 加载与重写速度。vm.overcommit_memory=1,控制实例 maxmemory,优先物理机/高性能虚拟化;避免与高 I/O 服务共盘。io-threads、io-threads-do-reads)分担网络与部分 I/O 压力。三 场景化组合策略
| 场景 | 推荐组合 | 关键配置要点 | 取舍说明 |
|---|---|---|---|
| 缓存优先、可接受分钟级丢失 | RDB 为主 | 适度保存点(如 save 300 10、save 60 10000);rdbcompression yes、rdbchecksum yes |
备份/恢复快,性能影响小 |
| 强一致、低丢失 | AOF 为主 | appendfsync everysec;auto-aof-rewrite-percentage 80-100、auto-aof-rewrite-min-size 32-64mb;必要时 no-appendfsync-on-rewrite yes |
安全性高,I/O 与时延增加 |
| 通用生产、兼顾恢复与速度 | 混合持久化 | appendonly yes + aof-use-rdb-preamble yes;RDB 适度保存点 |
启动快、重写快,仍保留 AOF 的细粒度恢复能力 |
四 监控与故障排查
INFO persistence 查看 rdb_last_bgsave_status、aof_rewrite_in_progress、aof_last_bgrewrite_status 等。INFO persistence 观察 AOF 阻塞计数;everysec 策略下若距离上次 fsync 超过约2秒可能触发主线程等待。iostat/iotop 分析磁盘 I/O,避免与高写入服务共盘。stop-writes-on-bgsave-error yes 会停止写入,先排查磁盘空间、权限、I/O 瓶颈,再恢复写入。auto-aof-rewrite-min-size、降低重写频率,或在低峰期手动 BGREWRITEAOF。vm.overcommit_memory、使用更快存储与更优虚拟化技术。