Redis 重启后数据是否会丢失,取决于其持久化配置。以下是详细分析及解决方案:
CONFIG GET save
和 CONFIG GET appendonly
,若均为空或appendonly
为no
,则无持久化。.rdb
文件)。ini
save 900 1 # 15分钟内至少1个key变更则触发保存
save 300 10 # 5分钟内至少10个key变更
save 60 10000 # 1分钟内至少10000个key变更
dbfilename dump.rdb # RDB文件名
dir ./ # 保存路径
save 60 1
),但会增加磁盘IO。SAVE
(阻塞)或 BGSAVE
(后台保存)。.aof
文件),重启时重放日志恢复数据。ini
appendonly yes
appendfsync everysec # 每秒同步(推荐平衡性能与安全)
# appendfsync always # 每次写都同步(最安全,性能最低)
# appendfsync no # 由操作系统决定(风险最高)
BGREWRITEAOF
压缩AOF文件。aof-use-rdb-preamble
(混合持久化,Redis 4+)。ini
aof-use-rdb-preamble yes
dir
配置为可靠路径,避免与系统盘同分区。dump.rdb
或 appendonly.aof
到异地。redis-check-rdb
或 redis-check-aof
工具检测文件完整性。redis-check-aof --fix
修复文件。配置 | 数据丢失风险 | 性能影响 |
---|---|---|
无持久化 | 全部丢失 | 无 |
RDB | 最后一次快照后数据 | 低 |
AOF(everysec) | 最多1秒数据 | 中 |
RDB+AOF混合 | 极低 | 中高 |
推荐:生产环境至少启用 AOF(appendfsync everysec)
或混合持久化。