RDB vs AOF

Тема дорожной карты · Redis

Redis предлагает два механизма персистентности — RDB-снимки и AOF (Append-Only File) — каждый из которых имеет различные компромиссы между надёжностью и производительностью. RDB записывает компактный бинарный снимок с заданными интервалами (save 900 1), минимизируя дисковый ввод-вывод, но потенциально теряя данные за несколько минут при сбое. AOF регистрирует каждую команду записи (appendonly yes) и поддерживает appendfsync everysec для потери данных не более чем за одну секунду, ценой большего файла, который непрерывно растёт до тех пор, пока BGREWRITEAOF не сожмёт его. Для максимальной надёжности оба механизма могут быть включены одновременно: Redis использует AOF при перезапуске (более полные данные), тогда как RDB обеспечивает возможность быстрого полного резервного копирования. Выбор между RDB и AOF — или использование обоих — зависит от допустимых потерь данных, требований ко времени перезапуска и доступной пропускной способности дискового ввод-вывода.

Как это работает

RDB vs AOF имеет два механизма. 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 vs AOF: appendfsync always убивает throughput; "у нас AOF, мы в безопасности" (OOM при fork() может коррумпировать AOF — храните off-host бекап); AOF растёт без границ (включите auto-aof-rewrite-percentage); не тестируете restore (день, когда понадобится, — худший день узнать, что AOF битый).

Связанные понятия

Полезные ресурсы