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

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

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

Этап 03 · Основные этапы

Ответ на несколько PING

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

На этом этапе вы добавите ответы на несколько команд PING, отправленных через одно соединение.

Обработка нескольких команд

Завершив отправку ответа на предыдущую команду, сервер Redis сразу начинает ожидать следующую. Благодаря этому клиенты Redis могут отправлять несколько команд через одно соединение.

На этом этапе сервер должен выполнять цикл, непрерывно считывая команды и отправляя ответы через то же соединение. Пока мы работаем только с командой PING, программа может просто читать входные данные в цикле и отвечать +PONG\r\n.

Тесты

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

$ ./your_program.sh

Затем она отправит несколько команд PING через одно соединение.

Например:

$ echo -e "PING\nPING" | redis-cli

Для каждой отправленной команды ожидается ответ +PONG\r\n.

Примечания

  • Программа получит не просто байты PING, а что-то вроде *1\r\n$4\r\nPING\r\n: это представление команды PING в протоколе Redis.
  • Как и на предыдущем этапе, можно задать ответ +PONG\r\n прямо в коде. К разбору клиентского ввода мы перейдём позже.
  • Тестирующая программа отправит команды PING через одно соединение. Обработка нескольких соединений появится на следующих этапах.

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

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

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

go / ЛОКАЛЬНО

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

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

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

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