Проектная лаборатория

Собственный Redis

0 / 124этапов пройдено

Этап 14 · Сохранение в AOF

Параметры AOF по умолчанию

Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.

На этом этапе вы зададите значения по умолчанию для параметров конфигурации AOF.

Сохранение в AOF в Redis

Redis хранит все данные в памяти: это быстро, но ненадёжно при сбоях. Если сервер аварийно завершится, всё исчезнет. AOF (Append Only File, файл только для добавления) — один из способов решить эту проблему. Когда он включён, сервер записывает каждую команду изменения данных в файл, а после перезапуска воспроизводит его для восстановления состояния.

Поведение AOF определяется несколькими параметрами конфигурации. На этом этапе вы зададите их значения по умолчанию, чтобы их можно было получить через CONFIG GET. Саму логику сохранения пока реализовывать не нужно.

Параметры и их значения по умолчанию:

Параметр Назначение По умолчанию
dir Основной каталог, где Redis хранит файлы данных Текущий рабочий каталог при запуске
appendonly Включает или отключает сохранение в AOF no
appenddirname Подкаталог внутри dir для файлов AOF и манифеста appendonlydir
appendfilename Имя файла только для добавления, в котором записываются операции изменения данных appendonly.aof
appendfsync Частота сброса буферизованных записей в файл AOF на диске everysec

Тесты

Тестирующая программа запустит вашу программу так:

$ ./your_program.sh

Затем запросит каждый параметр через CONFIG GET:

$ redis-cli CONFIG GET dir
1) "dir"
2) "/path/to/current/directory"
 
$ redis-cli CONFIG GET appendonly
1) "appendonly"
2) "no"
 
$ redis-cli CONFIG GET appenddirname
1) "appenddirname"
2) "appendonlydir"
 
$ redis-cli CONFIG GET appendfilename
1) "appendfilename"
2) "appendonly.aof"
 
$ redis-cli CONFIG GET appendfsync
1) "appendfsync"
2) "everysec"

Каждый ответ — массив RESP из двух объёмных строк: имени параметра и его значения. Например, CONFIG GET appendonly должна вернуть:

*2\r\n$10\r\nappendonly\r\n$2\r\nno\r\n

Тестирующая программа проверит, что:

  • Каждый вызов CONFIG GET возвращает массив RESP из двух элементов.
  • Имя и значение по умолчанию каждого параметра верны.

Примечания

  • На этом этапе не нужно реализовывать сохранение в AOF. Достаточно хранить и возвращать значения по умолчанию.
  • Если вы уже реализовали CONFIG GET для других параметров в предыдущем задании, возможно, достаточно добавить эти ключи в существующую конфигурацию.

Проверка в вашей IDE

Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.

Настройка проекта и IDE

1. Создайте проект один раз

node '/opt/graphlms/tools/project-lab/cli.mjs' init redis ./my-redis --language go

2. Откройте папку в IDE

cd ./my-redis

Реализуйте требования этапа в созданном проекте.

Запустите из папки проекта

node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage uj3

Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.

Результат проверки

go / ЛОКАЛЬНО

Подключение к локальной проверке…

Здесь появится результат

Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.

GraphLMS — инженерная лаборатория роста