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

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

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

Этап 31 · Репликация

Приём рукопожатия (1/2)

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

На этом этапе мы начнём реализовывать приём рукопожатия репликации на стороне ведущего.

Напоминание о рукопожатии

До сих пор мы реализовывали рукопожатие со стороны реплики. Теперь реализуем его на стороне ведущего.

Во время рукопожатия ведущий получает от реплики:

  1. Команду PING.
  2. Две команды REPLCONF.
  3. Команду PSYNC.

Ваш сервер Redis уже поддерживает PING, поэтому для первого шага ничего дополнительно делать не нужно.

На этом этапе вы добавите приём двух команд REPLCONF ведущим.

В рамках задания можно игнорировать аргументы обеих команд и просто отвечать +OK\r\n: это строка OK, закодированная как простая строка.

Тесты

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

./your_program.sh --port <PORT>

Затем отправит команды:

  1. PING — ожидается +PONG\r\n.
  2. REPLCONF listening-port <PORT> — ожидается +OK\r\n.
  3. REPLCONF capa psync2 — ожидается +OK\r\n.

Проверка в вашей 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 fj0

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

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

go / ЛОКАЛЬНО

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

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

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

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