Проектная лаборатория
Собственный Redis
Этап 31 · Репликация
Приём рукопожатия (1/2)
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе мы начнём реализовывать приём рукопожатия репликации на стороне ведущего.
Напоминание о рукопожатии
До сих пор мы реализовывали рукопожатие со стороны реплики. Теперь реализуем его на стороне ведущего.
Во время рукопожатия ведущий получает от реплики:
- Команду
PING. - Две команды
REPLCONF. - Команду
PSYNC.
Ваш сервер Redis уже поддерживает PING, поэтому для первого шага ничего дополнительно делать не нужно.
На этом этапе вы добавите приём двух команд REPLCONF ведущим.
В рамках задания можно игнорировать аргументы обеих команд и просто отвечать +OK\r\n: это строка OK, закодированная как простая строка.
Тесты
Тестирующая программа запустит вашу программу так:
./your_program.sh --port <PORT>Затем отправит команды:
PING— ожидается+PONG\r\n.REPLCONF listening-port <PORT>— ожидается+OK\r\n.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 go2. Откройте папку в IDE
cd ./my-redisРеализуйте требования этапа в созданном проекте.
Запустите из папки проекта
node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage fj0Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.