Home Database Redis MISCONF RDB Snapshot — Disk Fix and Persist
Intermediate 5 min · September 23, 2026

Redis MISCONF RDB Snapshot — Disk Fix and Persist

Fix Redis MISCONF by freeing disk, fixing permissions, and restarting persistence.

N
Naren Founder & Principal Engineer

20+ years shipping high-throughput database systems. Lessons pulled from things that broke in production.

Follow
Production
production tested
September 23, 2026
last updated
1,905
articles · all by Naren
Before you start⏱ 10 min
  • A Redis server (5+) with redis-cli access
  • Shell access to check disk and dir ownership
  • Know your save/appendonly settings and data dir
 ● Production Incident 🔎 Debug Guide
Quick Answer
  • MISCONF means Redis can't persist RDB snapshots (disk full, permissions, no space) and, with stop-writes-on-bgsave-error yes, it refuses writes rather than risk silent data loss
  • Confirm with INFO persistence: rdb_last_bgsave_status:err plus rdb_last_bgsave_time_sec tells you background saves are failing — then check df -h and the dir ownership
  • Fix the cause (free disk, chown the data dir, clear the failing volume), then restart persistence with BGSAVE and verify LASTSAVE advances and status returns to ok
  • For durability without fork storms, enable AOF (appendonly yes) alongside RDB — and never leave stop-writes disabled as the 'fix'
✦ Definition~90s read
What is Redis MISCONF RDB Snapshot Fix?

RDB persistence forks a child that writes a point-in-time snapshot (dump.rdb) while the parent serves traffic — copy-on-write makes the fork cheap until writes spike. BGSAVE fails on mundane grounds: ENOSPC (volume full, often from logs sharing the volume), EACCES (data dir owned by root after a deploy, read-only mounts), fork failures under memory pressure (overcommit settings, huge instances), and disappearing volumes (detached disks, full tmpfs for temp files).

Picture a cashier whose register refuses new sales because the end-of-day journal can't be filed — the filing cabinet is full (disk) or locked (permissions).

Any failure with stop-writes-on-bgsave-error yes (the default) flips the server into MISCONF: reads continue, writes get the error.

INFO persistence exposes the state machine: rdb_last_bgsave_status (ok/err), rdb_last_bgsave_time_sec, rdb_changes_since_last_save (growth since the last good snapshot), loading/aof flags, and the most recent error in the log (Can't save in background: fork: Cannot allocate memory, or Failed opening the RDB file for saving: Permission denied). LASTSAVE timestamps the last successful snapshot — a stale LASTSAVE plus err status is the complete diagnosis.

Two durable topologies exist. RDB alone: compact snapshots, slow recovery point granularity (minutes of loss), fork cost per save. RDB plus AOF (appendonly yes, appendfsync everysec): second-by-second durability with rewrite-compacted logs, at steady I/O cost.

Replicas inherit persistence config independently — a primary in MISCONF still replicates reads, but a replica that can't persist restarts empty, so monitor every node, not just writers.

Plain-English First

Picture a cashier whose register refuses new sales because the end-of-day journal can't be filed — the filing cabinet is full (disk) or locked (permissions). MISCONF is that refusal: Redis stops taking writes rather than silently losing your data. The remedy is emptying the cabinet (free disk), unlocking it (fix ownership), and filing again (BGSAVE) — then proving the journal advances (LASTSAVE). A second journal method (AOF) means one stuck drawer never halts the whole shop again.

MISCONF Redis is configured to save RDB snapshots, but it's currently unable to persist to disk. Commands that may modify the data set are disabled. It appears during the night nobody watches: logs fill the volume, a deploy changes the data-dir owner, or a forked bgsave hits memory pressure — and Redis chooses safety over availability, refusing writes until persistence works again.

That refusal surprises teams: the server is up, reads work, RAM looks fine — but every write fails. The stop-writes-on-bgsave-error yes default is deliberate protection: without it, Redis would accept writes it can no longer snapshot, turning a disk problem into silent data-loss exposure on restart.

This guide diagnoses through INFO persistence, fixes disk and permission causes, restarts snapshots cleanly, handles the stop-writes flag honestly, adds AOF as a second durability leg, and monitors persistence so the next failure pages before writes halt. The same drill covers every node type — primaries, replicas, and sentinels alike.

Read the Error and the Persistence State

MISCONF names the policy (configured to save, currently unable) and the consequence (writes disabled) — but not the cause. INFO persistence supplies it: rdb_last_bgsave_status ok/err, rdb_last_bgsave_time_sec (-1 means never failed... actually time of last attempt), rdb_changes_since_last_save (how much is at risk), and rdb_bgsave_in_progress. Pair with LASTSAVE (Unix timestamp of the last good snapshot): err status plus a LASTSAVE hours old is a failing snapshotter, full stop.

Read the server log for the one-line cause BGSAVE prints on failure: 'Failed opening the RDB file dump.rdb for saving: Permission denied' (EACCES — ownership/mount), versus 'Can't save in background: fork: Cannot allocate memory' (memory/overcommit), versus write errors mid-save (ENOSPC). Each maps to a different section below, so capture the line before acting — the fix for permissions does nothing for a full disk.

Record the risk number too: rdb_changes_since_last_save counts writes since the last good snapshot, i.e., your exposure if the box dies now. Thousands of changes reframes the incident from 'writes halted' to 'writes halted AND prior writes unsnapshotted' — which sets the urgency for the disk fix versus the flag workaround correctly.

persistence_state.shBASH
1
2
3
4
5
6
7
8
9
10
11
# State machine: status, last attempt, exposure since last good save
redis-cli -h cache-01 INFO persistence | grep -E \
  'rdb_last_bgsave_status|rdb_last_bgsave_time_sec|rdb_changes_since_last_save|rdb_bgsave_in_progress'

# Last successful snapshot (stale = failing snapshots)
redis-cli -h cache-01 LASTSAVE
date +%s  # compare: gap is unsnapshotted exposure

# The one-line cause BGSAVE printed on failure
sudo grep -iE 'background saving|failed opening|cannot allocate' \
  /var/log/redis/redis-server.log | tail -5
📊 Production Insight
A team hunted Sentinel elections for 8 minutes while INFO persistence plus df -h named ENOSPC in 30 seconds. Persistence state first, topology second.
🎯 Key Takeaway
INFO persistence plus LASTSAVE plus the log's one-line cause names the failure completely — capture all three before acting.

Disk Full or Permissions: The Two Usual Causes

ENOSPC arrives via sharing: app logs, journald, or backups on the same volume as dump.rdb, growing until the next forked save finds zero bytes. Diagnose with df -h on the CONFIG GET dir path (not / — Redis may live on a dedicated mount whose fullness root's df hides among healthy lines), then du-sort the volume to name the hog. Reclaim non-Redis bytes only: stale logs, vacuumed journals, orphaned temps. dump.rdb and appendonly files are recovery assets, never cleanup candidates.

EACCES arrives via ownership: config management, manual chowns, or container volume mounts leaving the data dir root-owned or read-only. ls -ld plus ls -l on the dir and file name it; chown -R redis:redis plus mode 750 repairs it; /proc/mounts reveals read-only mounts needing remounts. The deploy that broke ownership will re-break it nightly unless its template is fixed — audit the config management diff, not just the directory.

Fork failures are the third, rarer cause: Cannot allocate memory on huge instances without overcommit tuning (vm.overcommit_memory=1). BGSAVE needs copy-on-write headroom proportional to write churn during the save; check the log line, set overcommit, and consider active defrag plus smaller save frequencies for multi-GB instances. Memory-cause MISCONF masquerades as disk — the log line distinguishes them.

disk_perm_fix.shBASH
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Which volume? (CONFIG dir, not /) + who hogs it?
redis-cli -h cache-01 CONFIG GET dir
redis-cli -h cache-01 CONFIG GET dbfilename
df -h /var/lib/redis
du -sh /var/lib/redis/* 2>/dev/null | sort -rh | head

# ENOSPC: reclaim non-Redis bytes (never dump.rdb / appendonly files)
sudo journalctl --vacuum-size=500M
sudo find /var/log/app -name '*.log.*' -mtime +7 -delete

# EACCES: repair ownership + mode
ls -ld /var/lib/redis
sudo chown -R redis:redis /var/lib/redis
sudo chmod 750 /var/lib/redis
📊 Production Insight
Eleven GB of stale logs on a shared volume caused a 25-minute write halt. Dedicated persistence volumes plus logrotate monitoring ended the entire class.
🎯 Key Takeaway
df the CONFIG dir path, reclaim non-Redis bytes for ENOSPC, chown for EACCES — and fix the template that broke ownership.

The stop-writes Flag: Protection, Not Punishment

stop-writes-on-bgsave-error yes is the default for a reason: it converts silent durability loss into a loud, pageable write halt. With the flag on, a failed snapshot stops writes — painful, visible, recoverable. With it off, Redis accepts writes it cannot snapshot, and a subsequent crash loses everything since the last good save with no prior warning. The flag doesn't cause the incident; it announces the incident that already happened.

Use CONFIG SET stop-writes-on-bgsave-error no strictly as a timeboxed bridge: writes resume while you fix the disk in the same window, incident stays open, revert within the hour via CONFIG SET ... yes plus CONFIG REWRITE. Document the window in the ticket with timestamps — 'flag off 22:04, disk fixed 22:31, flag on 22:32' — so the next review sees a controlled bridge, not a casual dismissal of durability.

Never accept 'leave it off' as the resolution, from anyone, for any convenience argument. Guides recommending permanent disable trade real durability for uptime theater: green dashboards over a snaptureless server. The correct permanent fix is always working persistence — disk, permissions, memory — with the flag on, verified by LASTSAVE advancing.

stopwrites_bridge.shBASH
1
2
3
4
5
6
7
8
9
10
11
# Current posture (expect yes)
redis-cli -h cache-01 CONFIG GET stop-writes-on-bgsave-error

# BRIDGE ONLY: resume writes while fixing disk (timebox < 1h, ticket stays open)
redis-cli -h cache-01 CONFIG SET stop-writes-on-bgsave-error no

# ... fix disk/permissions NOW ...

# Restore protection + persist config
redis-cli -h cache-01 CONFIG SET stop-writes-on-bgsave-error yes
redis-cli -h cache-01 CONFIG REWRITE
⚠ The Flag Is a Bridge, Never the Fix
Disabling stop-writes resumes writes Redis cannot snapshot — silent loss exposure on the next crash. Timebox under an hour with the ticket open, then restore yes and verify LASTSAVE advances.
📊 Production Insight
A team left the flag off 'temporarily' for 6 weeks — then a crash lost a day of sessions with zero warning. Bridges get timestamps and reverts, not permanence.
🎯 Key Takeaway
Keep the flag on as protection; disable only as a timestamped bridge while fixing persistence itself.

Restart Persistence After the Fix

With cause fixed, restart the snapshotter deliberately: BGSAVE (expect 'Background saving started'), then poll LASTSAVE until the timestamp advances past the incident window. An advancing LASTSAVE is the only proof that matters — config reads and log optimism don't count. Confirm INFO persistence flips rdb_last_bgsave_status to ok and rdb_changes_since_last_save resets toward zero as the fresh snapshot absorbs the backlog.

If BGSAVE fails again immediately, re-read the log line — the second failure often differs from the first (permissions fixed, now ENOSPC from the backlog's fork needs; or the temp file colliding). Fix forward through each distinct cause; each BGSAVE attempt prints exactly one. Two different failures in sequence is normal progress, not a new incident.

Persist any config changes with CONFIG REWRITE so restarts keep them — runtime SETs evaporate on restart, and a failover that resurrects the old broken dir or the disabled flag reopens the incident on the new primary. Verify the rewritten redis.conf contains the corrected dir, dbfilename, and flag before closing the ticket. A failover that resurrects stale config reopens the incident on the new primary within hours.

restart_persist.shBASH
1
2
3
4
5
6
7
8
9
10
11
12
13
# Trigger + prove: LASTSAVE must advance past the incident window
redis-cli -h cache-01 BGSAVE
sleep 5
redis-cli -h cache-01 LASTSAVE
sleep 10
redis-cli -h cache-01 LASTSAVE  # must be newer than before

# Status flip + backlog absorbed
redis-cli -h cache-01 INFO persistence | grep -E \
  'rdb_last_bgsave_status|rdb_changes_since_last_save'

# Persist runtime config so failovers keep the fix
redis-cli -h cache-01 CONFIG REWRITE
📊 Production Insight
LASTSAVE advancing is the only proof of recovery — one team closed on 'BGSAVE started' optimism while saves kept failing silently behind it.
🎯 Key Takeaway
BGSAVE, poll LASTSAVE until it advances, confirm ok status, then CONFIG REWRITE.

AOF Fallback: Durability Without Fork Storms

AOF (append-only file) logs every write and rewrites compactly on schedule — second-granularity durability (appendfsync everysec) without RDB's fork-per-save cost profile. Enabling it beside RDB gives two independent recovery legs: snapshots for fast restarts, logs for fine-grained replay. When RDB fork pressure (huge instance, write churn) is itself the MISCONF cause, AOF carries durability while you retune snapshot frequency.

Enable online: CONFIG SET appendonly yes starts logging immediately; BGREWRITEAOF compacts the initial bulk; CONFIG REWRITE persists both. Expect steady I/O (everysec fsync) instead of bursty fork load — size the volume's IOPS for the stream, not the snapshot. Monitor aof_last_rewrite_time_sec and aof_last_bgrewrite_status exactly like their RDB twins; a second leg needs the same watchdog.

Keep both legs monitored and tested: restart drills that recover from RDB, point-in-time replays from AOF, and corruption checks (redis-check-aof) quarterly. An untested durability leg is a hope, and hopes don't restore sessions at 2 AM. Two legs, both watched, both drilled — that is the posture that survives disks, forks, and failures together every single time without exception.

aof_fallback.shBASH
1
2
3
4
5
6
7
8
9
10
11
12
13
# Second durability leg, enabled online
redis-cli -h cache-01 CONFIG SET appendonly yes
redis-cli -h cache-01 BGREWRITEAOF
sleep 10
redis-cli -h cache-01 INFO persistence | grep -E \
  'aof_enabled|aof_last_bgrewrite_status|aof_last_rewrite_time_sec'

# Persist + pin in redis.conf for restarts
redis-cli -h cache-01 CONFIG REWRITE
grep -E '^(appendonly|appendfsync|dir|dbfilename)' /etc/redis/redis.conf

# Quarterly drill asset
redis-check-aof --fix /var/lib/redis/appendonly.aof
📊 Production Insight
AOF as second leg survived an RDB fork-pressure outage with zero write halts — the leg you'd already tested is the leg that saves you.
🎯 Key Takeaway
Enable AOF beside RDB for fine-grained durability; monitor and drill both legs equally.

Prevention: Disk Alerts, Backups, and Replicas

Isolate persistence onto its own volume at provisioning: dump.rdb, AOF, and temp files share one disk sized for snapshots plus growth — never with app logs, never with backups staging. Alert at 75% with a 24-hour growth projection (df trends, not just thresholds); a volume filling 2 GB/day pages days before ENOSPC, not minutes. Logrotate configs for anything near Redis get monitored checksums — the incident's root cause was a silently disabled rotator.

Watch the full persistence triad per node: disk %, rdb_last_bgsave_status, and LASTSAVE age (stale beyond 2× the save interval pages). A cron watchdog over redis-cli INFO plus df covers all three in ten lines and pages before writes halt — the 12 green minutes of read-only health checks never recur. Cover replicas identically: a replica that can't persist restarts empty, and Sentinel won't warn you.

Ship snapshots off-box: rdb backups to object storage hourly, AOF segments with the same cadence, restore drills monthly. On-box persistence protects against crashes; off-box copies protect against everything else — volume loss, AZ failure, the rm -rf that no flag can stop. Durability is a chain from fork to off-box copy, and every link gets a monitor.

watch_persist.shBASH
1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
# Watchdog: disk %, bgsave status, LASTSAVE age (page before writes halt)
set -euo pipefail
HOST=cache-01
PCT=$(df -h /var/lib/redis | awk 'NR==2{print $5}' | tr -d '%')
ST=$(redis-cli -h $HOST INFO persistence | grep rdb_last_bgsave_status | cut -d: -f2 | tr -d '\r')
AGE=$(python3 -c "import time; print(int(time.time())-$(redis-cli -h $HOST LASTSAVE))")
[ "$PCT" -ge 75 ] && { echo "PAGE: disk ${PCT}%"; exit 1; }
[ "$ST" != "ok" ] && { echo "PAGE: bgsave status $ST"; exit 1; }
[ "$AGE" -gt 7200 ] && { echo "PAGE: LASTSAVE ${AGE}s stale"; exit 1; }
echo "OK: disk ${PCT}% bgsave $ST lastsave ${AGE}s ago"
💡Watch Writes, Not Just Reads
Read-only health checks stayed green through a total write halt. Probe with a SET/DEL canary plus persistence state — the check that writes is the check that catches MISCONF.
📊 Production Insight
A ten-line watchdog (disk, bgsave status, LASTSAVE age) now pages before writes halt — three near-misses handled as routine tickets this year.
🎯 Key Takeaway
Isolate volumes, watch the persistence triad per node, and ship snapshots off-box with restore drills.
● Production incidentPOST-MORTEMseverity: high

Log Rotation Lapsed and Filled the Redis Volume in 25 Minutes

Symptom
At 9:40 PM writes to the session Redis began failing with MISCONF — 4,800 write errors per minute, session creation at zero, carts freezing mid-checkout. Reads served stale-ish session data fine, so health checks (read-only GETs) stayed green for 12 minutes while users couldn't log in or pay. The on-call discovered it from the support channel, not monitoring, at 9:52 PM.
Assumption
The team assumed a Redis crash or failover event and triggered a manual failover to the replica — which shared the same log volume mount pattern and failed its own bgsave 4 minutes later, doubling the incident. Eight minutes went to Sentinel logs for an election that never happened, because 'writes failing, reads fine' didn't match anyone's mental model of a down server.
Root cause
Logrotate had been disabled by a config-management change 6 days earlier; app logs on the shared volume grew 2 GB/day until 100% full at 9:38 PM. The next forked bgsave hit ENOSPC, rdb_last_bgsave_status flipped to err, and stop-writes-on-bgsave-error (yes) halted writes as designed. INFO persistence plus df -h would have named it in 30 seconds; instead two failovers and a Sentinel hunt burned 25 minutes.
Fix
At 10:05 PM they cleared 11 GB of stale logs, ran BGSAVE, watched LASTSAVE advance and rdb_last_bgsave_status return to ok — writes recovered instantly. The replica got the same cleanup. Follow-ups: dedicated volume for dump.rdb/AOF, logrotate restored with monitoring, a persistence watchdog (bgsave status + disk % + LASTSAVE age) paging before writes halt, and AOF enabled as the second durability leg.
Key lesson
  • Never share Redis persistence volumes with logs: a 2 GB/day leak becomes a 25-minute write outage exactly when nobody watches — isolate dump.rdb and AOF on their own disk.
  • Monitor persistence state, not just process liveness: read-only health checks stayed green through a total write halt — watch rdb_last_bgsave_status, LASTSAVE age, and disk %.
  • Fail over the cause, not the symptom: the replica shared the volume pattern and failed identically — diagnose INFO persistence plus df before triggering elections.
Production debug guideSix checks from persistence state to verified snapshots.6 entries
Symptom · 01
Writes fail with MISCONF; reads still work
Fix
Read the persistence state machine: redis-cli -h cache-01 INFO persistence | grep -E 'rdb_last_bgsave_status|rdb_last_bgsave_time_sec|rdb_changes_since_last_save|aof_last_rewrite_time_sec'; Status err plus a stale LASTSAVE (redis-cli -h cache-01 LASTSAVE) confirms failing snapshots. Pull the exact cause from the server log file (grep -i 'background saving|Failed opening' /var/log/redis/redis-server.log | tail -5) to separate ENOSPC vs permission errors.
Symptom · 02
You need the disk and permission facts
Fix
Check the volume and ownership: df -h /var/lib/redis; du -sh /var/lib/redis/* | sort -rh | head; ls -ld /var/lib/redis; ls -l /var/lib/redis/dump.rdb; Then compare against config: redis-cli -h cache-01 CONFIG GET dir; redis-cli -h cache-01 CONFIG GET dbfilename; A 100% full volume is ENOSPC; root-owned dir or read-only mount is EACCES — each has a different fix below.
Symptom · 03
Disk full (ENOSPC) — reclaim space without touching Redis files
Fix
Free non-Redis bytes first: clear stale app logs sharing the volume, vacuum journald (journalctl --vacuum-size=500M), drop orphaned temp files — never delete dump.rdb or appendonly files (that's your recovery). Re-check df -h, then BGSAVE and watch redis-cli -h cache-01 LASTSAVE advance. Move Redis persistence to a dedicated volume in the follow-up so logs can never repeat this.
Symptom · 04
Permissions (EACCES) — Redis can't write its own dir
Fix
Fix ownership and mode: sudo chown -R redis:redis /var/lib/redis; sudo chmod 750 /var/lib/redis; If the mount is read-only (grep 'ro,' /proc/mounts | grep redis), remount rw after fixing the underlying storage. Then redis-cli -h cache-01 BGSAVE and confirm rdb_last_bgsave_status:ok. Audit the deploy that changed ownership — config management reverting it nightly will re-break you.
Symptom · 05
You need writes flowing before the disk work finishes
Fix
As a bridge only: redis-cli -h cache-01 CONFIG SET stop-writes-on-bgsave-error no; — writes resume immediately, but you are now accepting data Redis cannot snapshot. Timebox it (revert within the hour), keep the incident open, and fix the disk in the same window. Any guide telling you to leave it off permanently is trading durability for uptime theater.
Symptom · 06
Persistence healthy again — prove it and lock it in
Fix
Verify the full cycle: redis-cli -h cache-01 BGSAVE (expect 'Background saving started'), poll LASTSAVE until it advances, confirm INFO persistence shows rdb_last_bgsave_status:ok, then redis-cli -h cache-01 CONFIG REWRITE to persist any config changes. Add the watchdog (disk %, bgsave status, LASTSAVE age) before closing — recovery without monitoring is a rematch, not a resolution.
Redis MISCONF Causes at a Glance
Root CauseHow to ConfirmFixPrevention
Volume full (ENOSPC)df 100% on CONFIG dir; write errors in logClear non-Redis bytes; dedicated volume75% + growth-projection alerts; logrotate checks
Data dir permissions (EACCES)root-owned dir; 'Permission denied' in logchown redis:redis; fix templateAudit ownership in deploy pipeline
Fork OOM on huge instance'Cannot allocate memory'; overcommit 0vm.overcommit_memory=1; retune savesMemory headroom for CoW fork spikes
Read-only remount / lost volume/proc/mounts ro; missing deviceRemount; restore volume; BGSAVEStorage monitoring per persistence mount
Flag disabled as 'fix' elsewhereCONFIG GET shows no; no snapshotsRe-enable yes; fix persistenceLint configs for stop-writes no
⚙ Quick Reference
6 commands from this guide
FileCommand / CodePurpose
persistence_state.shredis-cli -h cache-01 INFO persistence | grep -E \Read the Error and the Persistence State
disk_perm_fix.shredis-cli -h cache-01 CONFIG GET dirDisk Full or Permissions
stopwrites_bridge.shredis-cli -h cache-01 CONFIG GET stop-writes-on-bgsave-errorThe stop-writes Flag
restart_persist.shredis-cli -h cache-01 BGSAVERestart Persistence After the Fix
aof_fallback.shredis-cli -h cache-01 CONFIG SET appendonly yesAOF Fallback
watch_persist.shset -euo pipefailPrevention

Key takeaways

1
MISCONF is protection
failed snapshots halt writes rather than risk silent loss.
2
Diagnose with INFO persistence, LASTSAVE, the log line, df, and ownership.
3
ENOSPC
clear non-Redis bytes. EACCES: chown and fix the template.
4
Disable stop-writes only as a timestamped sub-hour bridge, never the fix.
5
Prove recovery by LASTSAVE advancing; persist config with CONFIG REWRITE.
6
Dual RDB+AOF legs, isolated volumes, watchdog, off-box copies, drills.

Common mistakes to avoid

5 patterns
×

Failing over instead of reading persistence state

Symptom
Replica shares the volume pattern and fails identically — incident doubles.
Fix
INFO persistence plus df first; elect only after the cause is understood.
×

Leaving stop-writes disabled permanently

Symptom
Green dashboards over an unsnapshotted server; next crash loses everything silently.
Fix
Bridge under an hour with timestamps; restore yes and verify LASTSAVE.
×

Deleting dump.rdb to free space

Symptom
Recovery asset destroyed; restart comes up empty on top of the outage.
Fix
Clear non-Redis bytes only; snapshots and AOF are never cleanup candidates.
×

Health-checking reads only

Symptom
Twelve green minutes through a total write halt — paging from users, not monitoring.
Fix
SET/DEL canary plus persistence-state watchdog on every node.
×

Sharing the persistence volume with logs

Symptom
Any log leak becomes a write outage on Redis's schedule, not yours.
Fix
Dedicated volumes for RDB/AOF; monitor logrotate itself.
INTERVIEW PREP · PRACTICE MODE

Interview Questions on This Topic

Q01JUNIOR
What does Redis MISCONF mean?
Q02SENIOR
How do you diagnose MISCONF in 60 seconds?
Q03SENIOR
When is disabling stop-writes acceptable?
Q04SENIOR
RDB vs AOF — when each, and why both?
Q05SENIOR
Design Redis persistence that survives disk, fork, and AZ failures.
Q01 of 05JUNIOR

What does Redis MISCONF mean?

ANSWER
RDB snapshots are failing and stop-writes-on-bgsave-error is refusing writes to prevent silent loss. Reads work; writes halt until persistence recovers.
FAQ · 6 QUESTIONS

Frequently Asked Questions

01
Why do reads work but writes fail?
02
Is it safe to delete dump.rdb for space?
03
How do I know BGSAVE really recovered?
04
Fork fails with Cannot allocate memory — but RAM looks free?
05
Should replicas persist too?
06
RDB or AOF for a write-heavy workload?
N
Naren Founder & Principal Engineer

20+ years shipping high-throughput database systems. Lessons pulled from things that broke in production.

Follow
Verified
production tested
September 23, 2026
last updated
1,905
articles · all by Naren
🔥

That's Redis. Mark it forged?

5 min read · try the examples if you haven't

Previous
MongoDB E11000 Duplicate Key Fix
1 / 1 · Redis