Проектная лаборатория
Собственный Redis
Этап 27 · Репликация
Начальные идентификатор и смещение репликации
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы расширите команду INFO, добавив значения master_replid и master_repl_offset.
Идентификатор и смещение репликации
Каждый ведущий сервер Redis хранит две важные характеристики репликации: идентификатор репликации и смещение репликации.
Идентификатор репликации — длинная псевдослучайная строка. Он обозначает текущую историю набора данных ведущего. При первом запуске или перезапуске ведущий сбрасывает свой идентификатор.
Смещение репликации отслеживает количество байтов команд, переданных ведущим репликам. Это значение используется для обновления состояния реплик с учётом изменений данных. При запуске ведущего, пока реплики ещё не подключились, смещение равно 0.
На этом этапе вы инициализируете идентификатор и смещение репликации ведущего сервера:
- Идентификатор может быть любой псевдослучайной буквенно-цифровой строкой длиной
40символов.- В этом задании не обязательно генерировать случайную строку: можно задать её прямо в коде.
- Например, можно использовать
8371b4fb1155b71f4a04d3e1bc3e18c4a990aeeb.
- Смещение должно равняться
0.
Команда INFO должна возвращать эти значения под ключами master_replid и master_repl_offset соответственно.
Тесты
Тестирующая программа запустит вашу программу так:
./your_program.shЗатем отправит серверу INFO с параметром replication.
$ redis-cli INFO replicationПрограмма должна ответить объёмной строкой, каждая строка которой — пара «ключ — значение», разделённая двоеточием (:). Тест проверит пары:
role:mastermaster_replid: буквенно-цифровая строка из 40 символов.master_repl_offset:0
Примечания
- Код должен проходить предыдущие тесты, то есть по-прежнему возвращать правильное значение
role.
Проверка в вашей 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 xc1Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.