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

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

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

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

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

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

На этом этапе вы добавите поддержку нескольких клиентов, работающих одновременно.

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

Помимо нескольких команд от одного клиента, серверы Redis могут одновременно обслуживать несколько клиентов.

Для этого понадобятся потоки или, если хочется более сложной задачи, цикл событий, как в официальной реализации Redis.

Тесты

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

$ ./your_program.sh

Затем она одновременно отправит две команды PING через два разных соединения:

# These two will be sent concurrently so that we can test your server's ability to handle concurrent clients.
$ redis-cli PING
$ redis-cli PING

Ожидаются два отдельных ответа +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 zu2

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

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

go / ЛОКАЛЬНО

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

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

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

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