Проектная лаборатория
Собственный Redis
Этап 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 go2. Откройте папку в IDE
cd ./my-redisРеализуйте требования этапа в созданном проекте.
Запустите из папки проекта
node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage zu2Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.