客户端收到 LOADING Redis is loading the dataset in memory,表示 Redis 正在把持久化数据恢复到内存,尚未进入正常服务状态。刚重启且数据量较大时,这可能是正常过程;持续时间明显异常时,才需要进一步判断磁盘、内存、文件或容器挂载问题。
不要因为连接暂时失败就删除 dump.rdb 或 AOF 文件。它们可能是当前唯一可用于恢复的数据副本,误删会把启动慢变成永久数据丢失。

确认进程正在加载而不是反复崩溃
先查看服务状态和启动日志:
sudo systemctl status redis-server --no-pager
sudo journalctl -u redis-server --since '30 minutes ago' --no-pager
容器环境可检查:
docker ps -a --filter name=redis
docker logs --tail 200 redis
docker inspect redis --format '{{json .Mounts}}'
日志应显示正在读取 RDB 或 AOF,以及后续加载进度或完成信息。如果进程不断退出并被重启,客户端反复看到 LOADING 只是表象,真正问题在启动日志中。
用INFO persistence查看加载状态
Redis 的 INFO persistence 会报告持久化相关状态,其中 loading 表示是否正在加载转储文件:
redis-cli INFO persistence
重点关注 loading、loading_loaded_perc、loading_eta_seconds、aof_enabled 以及 RDB、AOF 最近状态。不同版本提供的字段可能略有差异,应以当前实例输出为准。
连续间隔采样几次,进度持续增加说明加载仍在推进。不要只凭一次百分比不变就判断卡死,慢磁盘或大对象反序列化可能让短时间采样没有明显变化。
判断实际使用RDB还是AOF恢复
Redis 官方文档说明,启用 AOF 后,重启时会重放 AOF 重建内存数据;同时启用 AOF 与 RDB 时,Redis 会使用更完整的 AOF 进行恢复。Redis 7.0 及以上还采用多段 AOF,由基础文件、增量文件和清单共同管理。
查看配置与实际目录:
redis-cli CONFIG GET dir
redis-cli CONFIG GET dbfilename
redis-cli CONFIG GET appendonly
redis-cli CONFIG GET appenddirname
若实例在加载阶段不允许这些命令,应从配置文件和日志确认。不能只看到目录里有 dump.rdb 就认定 Redis 正在加载 RDB。
检查磁盘、内存和持久卷
读取大型持久化文件需要足够的磁盘吞吐和内存。检查文件大小、可用空间、I/O 和内存:
sudo du -sh /var/lib/redis
df -h /var/lib/redis
free -h
vmstat 1 5
容器重建后挂载到错误目录,可能让 Redis 读取了意外文件或空目录;网络存储延迟也会显著拉长恢复时间。确认持久卷与配置里的 dir 一致,并核对文件所有者与启动日志。
内存至少要覆盖加载后的数据集及运行开销;仅比较持久化文件大小与可用内存并不准确。 数据在磁盘上的压缩形式和内存结构可能相差很大。
发现文件异常时先复制再检查
日志提示 RDB 或 AOF 损坏时,先停止继续覆盖并复制原文件。检查工具可以先以只读方式分析:
redis-check-rdb /path/to/dump.rdb
redis-check-aof /path/to/appendonly.aof
官方文档提醒,使用 redis-check-aof --fix 可能丢弃损坏位置之后的 AOF 内容。没有备份和可接受的数据丢失边界时,不要直接执行修复参数。 Redis 7 多段 AOF 还需要结合清单和实际版本处理,不能照搬旧版单文件命令。
需要演练恢复速度和工具行为时,可在 萤光云 创建隔离副本,或使用 LightNode 的临时实例测试同版本 Redis。应使用脱敏备份,并限制测试环境网络访问。
调整健康检查与完成验收
大型数据集恢复需要合理的启动宽限期。编排系统若把 LOADING 当作立即失败并反复重启,Redis 永远无法完成一次加载。应让存活检查允许进程继续运行,把就绪检查用于判断何时接收业务流量。
加载完成后执行:
redis-cli PING
redis-cli INFO persistence
redis-cli DBSIZE
再抽查关键键、过期时间和读写路径,并比较恢复前后的键数量与业务指标。验收标准是 PING 返回 PONG、loading 变为 0、日志无重复恢复错误、关键数据可读且业务写入符合预期。
FAQ
LOADING期间可以强制开放业务请求吗?
不建议绕过加载状态。数据尚未完整恢复时对外服务可能产生错误判断,正确做法是等待就绪并修正过短的健康检查宽限期。
RDB文件越大,加载时间一定越长吗?
通常会受数据量影响,但对象类型、磁盘性能、CPU、内存压力、容器存储和 Redis 版本都会改变实际时间,应通过进度与系统指标判断。
直接重启Redis能让加载更快吗?
重启会从头开始恢复,反而可能延长不可用时间。只有日志证明进程异常或配置已修复时,才应安排新的启动尝试。
温馨提示
先区分正在正常加载、反复崩溃和持久化文件损坏,再采取动作。 任何涉及 RDB、AOF 或挂载目录的修改都应先保存原始副本,并记录 Redis 版本与配置,确保可以回到故障发生时的数据状态。


