AOF логирование
Тема дорожной карты · Redis
AOF (Append-Only File) — механизм персистентности Redis, записывающий каждую операцию записи на диск и обеспечивающий более надёжную защиту от потери данных по сравнению с RDB-снимками. Параметр appendonly yes в redis.conf включает режим AOF, а appendfsync everysec обеспечивает баланс между производительностью и надёжностью, сбрасывая файл appendonly.aof на диск раз в секунду. Redis поддерживает три политики appendfsync: always (максимальная надёжность, минимальная пропускная способность), everysec (рекомендуемое значение по умолчанию) и no (самый быстрый вариант, сброс на диск управляется ОС). Команда BGREWRITEAOF запускает фоновую перезапись AOF-файла, сжимая его до минимального набора команд, необходимых для восстановления текущего состояния данных. Настройка AOF критически важна для продакшн-развёртываний Redis, где даже потеря нескольких секунд записей недопустима.
Как это работает
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 до того, как понадобится.
Типичные ошибки
Ловушки AOF логирование: appendfsync always убивает throughput; "у нас AOF, мы в безопасности" (OOM при fork() может коррумпировать AOF — храните off-host бекап); AOF растёт без границ (включите auto-aof-rewrite-percentage); не тестируете restore (день, когда понадобится, — худший день узнать, что AOF битый).