RDB снимки
Тема дорожной карты · Redis
Персистентность RDB (Redis Database) сохраняет point-in-time снимки всего набора данных Redis в бинарный файл dump.rdb, обеспечивая компактные, быстро загружаемые резервные копии. Команда SAVE блокирует сервер на время синхронной записи снимка, тогда как BGSAVE создаёт дочерний процесс для записи файла в фоне без прерывания обработки клиентских запросов. Директива save в redis.conf настраивает автоматические снимки: save 900 1 запускает снимок через 900 секунд, если изменился хотя бы 1 ключ. RDB-снимки идеально подходят для аварийного восстановления и ежедневного резервного копирования, поскольку компактный бинарный формат загружается быстрее, чем воспроизведение AOF-лога при перезапуске. Недостаток — данные, записанные после последнего снимка, теряются при незапланированном завершении работы, что делает RDB менее подходящим для приложений, требующих минимальных потерь данных.
Как это работает
RDB снимки имеет два механизма. RDB (save 900 1 ...) — snapshot всего датасета на диск периодически: компактно, быстро грузится, но теряет всё с последнего snapshot при крэше. AOF (appendonly yes) логирует каждую запись в файл, реплеит при рестарте: durable, с тюнингом fsync (always/everysec/no). Можно гонять оба; AOF — для durability, RDB — для быстрого рестарта. Современный Redis (7+) имеет hybrid AOF (RDB-префикс + AOF-хвост).
Когда применять
Для чистого кеша — RDB-only ок, потеря последних минут допустима. Для всего остального — AOF с appendfsync everysec, потеря последней секунды — обычный компромисс. Реплика, периодически делающая BGSAVE для offline бекапов (коррумпированный AOF на primary не должен быть единственным артефактом). Тестируйте restore с RDB/AOF до того, как понадобится.
Типичные ошибки
Ловушки RDB снимки: appendfsync always убивает throughput; "у нас AOF, мы в безопасности" (OOM при fork() может коррумпировать AOF — храните off-host бекап); AOF растёт без границ (включите auto-aof-rewrite-percentage); не тестируете restore (день, когда понадобится, — худший день узнать, что AOF битый).