*Redis LASTSAVE 命令

LASTSAVE 返回最近一次成功执行 RDB 持久化(如 SAVE 或 BGSAVE)的 Unix 时间戳(秒)。用于监控数据持久化状态。


*语法

LASTSAVE

*参数说明

本命令不接受任何参数。


*返回值

  • Integer:最近一次成功 RDB 保存的 Unix 时间戳(秒)
  • Integer (0):如果从未执行过成功的持久化操作

*时间复杂度

O(1)

*

*示例

*基本用法

> LASTSAVE
(integer) 1717489200

*监控持久化延迟

> TIME
1) (integer) 1717489500
2) (integer) 123456
> LASTSAVE
(integer) 1717489200

通过 TIME[0] - LASTSAVE 计算距离上次持久化的时间差。

*结合 BGSAVE 检查

> BGSAVE
Background saving started
> LASTSAVE
(integer) 1717489200
# 等待几秒后
> LASTSAVE
(integer) 1717489510

*常见错误

错误 原因 解决
(本命令无常见错误)

*最佳实践

  • 在监控脚本中配合 TIME 命令计算 TIME[0] - LASTSAVE,如果差值超过阈值(如 1 小时),触发告警
  • 仅反映 RDB(SAVE / BGSAVE)的成功时间,不反映 AOF 的持久化状态。监控 AOF 应使用 INFO persistence
  • 主从复制中,从节点的 LASTSAVE 反映其自身 BGSAVE 的时间,与主节点无关
  • 集群模式下每个节点独立维护 LASTSAVE 时间戳

*FAQ

Q1: LASTSAVE 返回 0 是什么意思? A: 表示自 Redis 启动以来,从未成功执行过 SAVEBGSAVE。常见于纯 AOF 模式或新启动的实例。

Q2: LASTSAVE 能反映 AOF 的写入时间吗? A: 不能。LASTSAVE 仅记录 RDB 持久化(SAVE / BGSAVE)的成功时间。AOF 的持久化状态需要通过 INFO persistence 中的 aof_last_write_statusaof_last_bgrewrite_status 查看。

Q3: BGSAVE 执行失败后 LASTSAVE 会更新吗? A: 不会。LASTSAVE 只在持久化成功完成时更新。如果 BGSAVE 失败,LASTSAVE 保持上一次成功的时间戳。