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

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

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

Этап 51 · Потоки

Чтение нескольких потоков через XREAD

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

На этом этапе вы добавите чтение нескольких потоков командой XREAD.

Команда XREAD для нескольких потоков

При чтении нескольких потоков команда XREAD после ключевого слова STREAMS передаётся список ключей потоков, а затем соответствующий список идентификаторов записей для каждого потока.

Формат команды:

XREAD STREAMS <key1> <key2> ... <id1> <id2> ...

Ответ сервера по-прежнему представляет собой массив RESP с потоками, где:

  • Каждый поток — массив из двух элементов: ключ потока и прочитанные записи.
  • Порядок потоков в ответе должен совпадать с порядком в команде.

Тесты

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

$ ./your_program.sh

Затем отправит несколько XADD, добавляя записи в разные потоки.

$ redis-cli XADD stream_key 0-1 temperature 95
$ redis-cli XADD other_stream_key 0-2 humidity 97

После этого отправит серверу XREAD для нескольких потоков.

$ redis-cli XREAD streams stream_key other_stream_key 0-0 0-1

Сервер должен ответить массивом RESP с результатами для всех указанных потоков.

Для примера выше ответ будет таким, в формате массива RESP:

[
  [
    "stream_key",
    [
      [
        "0-1",
        [
          "temperature",
          "95"
        ]
      ]
    ]
  ],
  [
    "other_stream_key",
    [
      [
        "0-2",
        [
          "humidity",
          "97"
        ]
      ]
    ]
  ]
]

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

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

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

go / ЛОКАЛЬНО

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

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

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

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