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

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

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

Этап 08 · Сохранение в RDB

Настройка файла RDB

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

Добро пожаловать в расширение «Сохранение в RDB»! В нём вы добавите поддержку чтения файлов RDB (файлов базы данных Redis).

На этом этапе вы добавите два параметра конфигурации, связанных с сохранением в RDB, и команду CONFIG GET.

Файлы RDB

Файл RDB — это снимок набора данных Redis на определённый момент времени. Когда сохранение в RDB включено, сервер Redis синхронизирует состояние в памяти с файлом RDB следующим образом:

  1. При запуске сервер Redis загружает данные из файла RDB.
  2. Во время работы сервер 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 из двух элементов:

  1. Имя параметра в виде объёмной строки RESP.
  2. Значение параметра в виде объёмной строки 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 go

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

cd ./my-redis

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

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

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

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

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

go / ЛОКАЛЬНО

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

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

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

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