Проектная лаборатория
Собственный Redis
Этап 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 go2. Откройте папку в IDE
cd ./my-redisРеализуйте требования этапа в созданном проекте.
Запустите из папки проекта
node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage uj3Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.