Проектная лаборатория
Собственный Redis
Этап 08 · Сохранение в RDB
Настройка файла RDB
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
Добро пожаловать в расширение «Сохранение в RDB»! В нём вы добавите поддержку чтения файлов RDB (файлов базы данных Redis).
На этом этапе вы добавите два параметра конфигурации, связанных с сохранением в RDB, и команду CONFIG GET.
Файлы RDB
Файл RDB — это снимок набора данных Redis на определённый момент времени. Когда сохранение в RDB включено, сервер Redis синхронизирует состояние в памяти с файлом RDB следующим образом:
- При запуске сервер Redis загружает данные из файла RDB.
- Во время работы сервер Redis периодически создаёт новые снимки данных для обновления файла RDB.
dir и dbfilename
Параметры конфигурации dir и dbfilename определяют расположение файла RDB:
dir— путь к каталогу, где хранится файл RDB (пример:/tmp/redis-data).dbfilename— имя файла RDB (пример:rdbfile).
Команда CONFIG GET
Команда CONFIG GET возвращает значения параметров конфигурации.
Она принимает один или несколько параметров конфигурации и возвращает массив RESP с парами «ключ — значение»:
$ redis-cli CONFIG GET dir
1) "dir"
2) "/tmp/redis-data"Хотя CONFIG GET позволяет получить несколько параметров сразу, тестирующая программа будет запрашивать только один параметр за команду CONFIG GET.
Тесты
Тестирующая программа запустит вашу программу так:
./your_program.sh --dir /tmp/redis-files --dbfilename dump.rdbЗатем отправит следующие команды:
$ redis-cli CONFIG GET dir
$ redis-cli CONFIG GET dbfilenameНа каждую команду CONFIG GET сервер должен ответить массивом RESP из двух элементов:
- Имя параметра в виде объёмной строки RESP.
- Значение параметра в виде объёмной строки RESP.
Например, если значение dir равно /tmp/redis-files, ожидаемый ответ на CONFIG GET dir:
*2\r\n$3\r\ndir\r\n$16\r\n/tmp/redis-files\r\nПримечания
- На этом этапе не нужно читать файл RDB: достаточно сохранить
dirиdbfilename. Чтение файла появится позже. - Если репозиторий создан до 5 октября 2023 года, скрипт
./your_program.shможет не передавать аргументы программе. Чтобы исправить это, измените./your_program.sh. Подробности — в PR с обновлением аргументов CLI.
Проверка в вашей 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 zg5Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.