Configuring Persistence with RDB

1. Understanding RDB Snapshots

PropertyDetail
FormatCompact binary point-in-time dump
Mechanismfork() + write to temp + rename
RecoveryFast bulk load on restart

2. Configuring Save Points

save 3600 1
save 300 100
save 60 10000
save ""              # disable RDB
PatternMeaning
save SECONDS CHANGESSnapshot if N keys changed in M seconds

3. Triggering Manual Save

CommandBehavior
SAVESynchronous; blocks server AVOID
BGSAVE [SCHEDULE]Background fork-based snapshot
LASTSAVEUnix ts of last successful save

4. Setting RDB Filename

DirectiveDefault
dbfilenamedump.rdb

5. Setting RDB Directory

DirectiveNotes
dir /var/lib/redisRDB + AOF written here

6. Getting Last Save Time

CommandReturns
LASTSAVEUnix timestamp
INFO persistenceStatus, last bgsave duration, error

7. Configuring Compression

DirectiveDefaultEffect
rdbcompression yesyesLZF compression — small CPU cost

8. Enabling Checksum

DirectiveDefault
rdbchecksum yesCRC64 footer, detects corruption

9. Handling RDB Failures

DirectiveDefault
stop-writes-on-bgsave-error yesReject writes if persistence fails

10. Understanding Fork Performance Impact

Warning: Forking large datasets causes COW page faults — disable Transparent Huge Pages (THP).
MitigationDetail
Disable THPecho never > /sys/kernel/mm/transparent_hugepage/enabled
vm.overcommit_memory=1Required to prevent OOM during fork

11. Using RDB for Backups

StrategyDetail
Hourly snapshotCopy dump.rdb to S3
BGSAVE + copyTrigger via cron

12. Tuning Save Intervals

WorkloadRecommendation
High writeLarger thresholds to reduce fork frequency
Cache onlysave "" (no persistence)
CriticalCombine RDB + AOF