At a glance
The number of minutes since Redis last wrote a successful RDB snapshot to the node’s own disk. RDB is Redis’s point-in-time snapshot file (dump.rdb): a compact, forked copy of the entire dataset taken on a schedule or on demand. This card answers “if the Redis process restarted right now, how much recent data would it have to reconstruct on startup”. It is the local-durability counterpart to the offsite backup card: a fresh RDB save protects you from a process crash; it does not protect you from losing the whole node.
Calculation
The card subtracts the last successful RDB save timestamp from “now”:rdb_last_save_time is reported directly by INFO persistence as a Unix epoch and is identical to what redis-cli LASTSAVE returns. It updates only when a save completes successfully. The engine reads two companion fields to qualify the value:
rdb_last_bgsave_status. If this iserr, the last save attempt failed (typically the fork failed for lack of memory, or the disk was full or read-only). In that case the timestamp may be stale even though Redis “tried”, so the card surfaces the failure rather than just an ageing counter.rdb_bgsave_in_progress. If a save is currently running, the age keeps climbing until that save lands; an in-progress save does not pre-emptively reset the clock.
save configuration directive (for example save 900 1 300 10 60 10000, meaning save after 900s if at least 1 key changed, after 300s if 10 changed, after 60s if 10,000 changed). A quiet instance with few writes may legitimately go a long time between saves under those rules; that is expected behaviour, not necessarily a fault, which is why the alert is tunable.
Worked example
A DBA manages a Redis 7.0 instance backing a product-recommendation service. Thesave directive is the default save 3600 1 300 100 60 10000. RDB is the only persistence mechanism (AOF is off). Snapshot taken on 22 Mar 26 at 14:20 UTC.
The card reads 78 minutes, just over the 60-minute alert, and turns amber. The DBA’s read:
- The last save succeeded, but cadence has slowed. Status is
ok, so nothing failed; the instance simply has not crossed asaverule in 78 minutes. Under the default rules, that means fewer than 100 keys changed in any 300-second window and fewer than 10,000 in any 60-second window since 13:02. For a recommendation cache during a quiet afternoon, that is plausible. - The exposure is 78 minutes of writes. If the process restarts now, it reloads
dump.rdbfrom 13:02 and loses any keys written since. For a recompute-on-miss cache that is harmless (the service repopulates). If this instance also held anything not recomputable, 78 minutes would be a real loss window. - Copy-on-write memory is healthy.
rdb_last_cow_sizeof 612 MB tells the DBA the fork’s copy-on-write footprint during the last save was moderate, so the save is not at risk of a fork failure from memory pressure. Worth watching alongside Memory Used vs Maxmemory % because a near-full instance can fail to fork.
- A high reading is not automatically a fault. RDB saves are write-driven by the
saverules. A quiet instance saving infrequently is behaving as configured. Read the value against the importance of the data, not as a universal alarm. - Watch the status field, not just the age. An ageing counter with status
okis a cadence question. An ageing counter with statuserris a failure: the fork or disk is broken and no new snapshot is being written at all. The card surfaces both, but they demand different responses. - RDB protects against restart, not node loss. A fresh
dump.rdblets Redis recover quickly after a process crash. It does nothing if the disk or VM is lost. Always pair this with Last Successful Backup (hours ago), which tracks the offsite copy.
Sibling cards DBAs should reference together
Reconciling against the source
Where to look in Redis’s own tooling:Why our number may legitimately differ from what you see:redis-cli LASTSAVEreturns the exact Unix timestamp this card is built on. Convert it and compare.INFO persistencefor the full picture:rdb_last_save_time,rdb_last_bgsave_status,rdb_bgsave_in_progress,rdb_changes_since_last_save(how many writes are unsaved), andrdb_last_cow_size.CONFIG GET saveto see the active save rules governing automatic cadence. The Redis log (path fromCONFIG GET logfile) forBackground saving started/Background saving terminated with successlines, and any fork-failure errors.
Cross-connector reconciliation:
Known limitations / FAQs
This card reads 4 hours but Redis seems totally healthy. Is something wrong? Probably not. RDB saves are triggered by thesave rules, which are write-volume based. A quiet instance can legitimately go hours without crossing a rule. Run CONFIG GET save to see the rules and INFO persistence to read rdb_changes_since_last_save: if few keys have changed, the long gap is expected. If the gap matters for your data, tighten the rules or raise the alert threshold rather than treating it as a fault.
What is the difference between this card and the offsite Backup card?
This card measures the last RDB save to the node’s own local disk. The Backup card measures the last copy that reached offsite storage. A local save survives a Redis process restart; only an offsite copy survives losing the node, disk, or region. You want both fresh: a tight RDB save age for fast local recovery and a tight backup age for disaster recovery.
The status is err. What does that mean and what do I do?
rdb_last_bgsave_status = err means the last save attempt failed. The two usual causes are (1) the fork failed because the OS could not allocate the copy-on-write memory (the instance is near full, or vm.overcommit_memory is not set to 1 on Linux), and (2) the disk is full or read-only. Check the Redis log for the exact error, free disk or memory, and confirm vm.overcommit_memory=1. Until a save succeeds, your local recovery point keeps ageing.
We only use AOF, not RDB. Should I ignore this card?
If RDB is genuinely disabled (save "" and no dump.rdb), this card may read a very high value or reflect the timestamp of an old snapshot. In that case the relevant durability signal is Last AOF Rewrite Status, and you can lower the priority of this card in the Alert Rules tab. Many teams run both RDB and AOF; if you do, keep both cards green.
Does running a manual BGSAVE reset the alert?
Yes. Any successful save, scheduled or manual, blocking SAVE or background BGSAVE, updates rdb_last_save_time and resets the card. Forcing a BGSAVE is a valid way to clear a transient amber reading, but if the underlying cadence is too slow for your data, fix the save rules rather than relying on manual saves.
Why does a BGSAVE sometimes spike memory and latency?
BGSAVE forks the Redis process. The child shares memory with the parent via copy-on-write, so during the save any keys the parent modifies trigger page copies, growing RSS. On a write-heavy, near-full instance this can spike memory (watch Memory Used vs Maxmemory %) and briefly raise latency. rdb_last_cow_size in INFO persistence quantifies that copy-on-write footprint from the last save.