Практическое задание

Эта задача — шаг 4 курса «Redis в проде»

AOF, который переживёт рестарт

средне~20 мин

На сервере хранятся сессии session:* (200 ключей). RDB-снимки отключены (save ""), так что сейчас данные живут только в памяти.

Включи журнал AOF так, чтобы настройка пережила перезапуск:

  • в /etc/redis/redis.conf должны быть appendonly yes и appendfsync everysec;
  • сессии терять нельзя;
  • после включения запиши ключ aof:check со значением survived;
  • перезапусти Redis через service redis-server restart.

После рестарта AOF должен быть включён, а aof:check и все сессии — на месте.

Конфиг /etc/redis/redis.conf открой во вкладке «Редактор» — там видно, что в нём сейчас и что поменялось после твоих команд.

Что потренируешь:
  • redis
  • AOF
  • appendonly
  • appendfsync
  • CONFIG REWRITE
  • персистентность

Разбор темы

AOF (append only file) — журнал всех изменяющих команд: после рестарта Redis проигрывает его и восстанавливает данные. appendfsync определяет, как часто журнал сбрасывается на диск: always — на каждую запись (надёжно и медленно), everysec — раз в секунду (теряется максимум около секунды, стандартный выбор), no — когда решит ОС. С Redis 7 AOF многофайловый: в каталоге appendonlydir лежат базовый файл, инкрементальные файлы и манифест, связывающий их. Классическая ошибка — включить appendonly yes только в конфиге и перезапуститься: Redis при старте читает AOF, а не RDB, получает пустой журнал и стартует без данных. Правильный порядок — включить AOF на лету (Redis сам запишет текущий датасет в базовый файл), дождаться окончания и закрепить настройку в конфиге.

Что проверяется

  1. AOF включён в redis.conf
  2. Redis перезапущен
  3. после рестарта AOF активен
  4. есть каталог AOF с манифестом
  5. aof:check пережил рестарт
  6. сессии не потеряны

Как это выглядит