先判断 Redis 承担什么职责#
如果 Redis 只是可重建缓存,可以关闭持久化;如果保存登录会话、队列或限流状态,就应明确可接受的数据丢失窗口。RDB 是时间点快照,AOF 记录写命令,两者可以同时启用。
常用生产配置#
conf
appendonly yes
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
save 900 1
save 300 10
save 60 10000
maxmemory-policy noeviction
appendfsync everysec 通常在性能和持久性之间取得平衡,极端故障下可能损失约一秒写入。是否可以接受,取决于业务,而不是配置模板。
在线检查#
bash
redis-cli -a "$REDIS_PASSWORD" INFO persistence
redis-cli -a "$REDIS_PASSWORD" INFO memory
redis-cli -a "$REDIS_PASSWORD" CONFIG GET appendonly
redis-cli -a "$REDIS_PASSWORD" CONFIG GET appendfsync
重点观察 aof_last_write_status、aof_last_bgrewrite_status、rdb_last_bgsave_status 和磁盘剩余空间。
恢复演练#
- 停止隔离环境中的 Redis。
- 复制 RDB/AOF 与权限信息。
- 启动相同主版本的 Redis。
- 检查启动日志与键数量。
- 用应用执行一次会话或队列流程。
详细取舍可参考 Redis Persistence 官方文档。如果实例中完全不能丢数据,还需要复制、高可用和业务侧幂等,而不只是把 appendfsync 改成 always。
讨论区 12
分享你的经验、补充或不同观点。支持 Markdown 基础语法。