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

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

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

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

Срок действия ключа

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

На этом этапе вы добавите поддержку задания срока действия ключа.

Параметры команды SET

Команда SET принимает необязательные аргументы, меняющие её поведение.

Вот несколько параметров, которые можно использовать с SET:

# Set a key with a 10-second expiry
$ redis-cli SET mykey value EX 10
OK
 
# Set a key with a 1000-millisecond expiry
$ redis-cli SET mykey value PX 1000
OK

Параметр PX

Параметр PX задаёт срок действия ключа в миллисекундах. По истечении этого срока ключ становится недоступен.

Например, клиент может задать ключ со сроком действия так:

$ redis-cli SET foo bar PX 100
OK

Эта команда присваивает ключу foo значение bar на 100 миллисекунд.

После истечения срока действия команда GET для этого ключа должна вернуть нулевую объёмную строку ($-1\r\n).

$ redis-cli GET foo
(nil)

Тесты

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

$ ./your_program.sh

Затем отправит серверу команду SET, задающую ключ со сроком действия:

$ redis-cli SET foo bar PX 100

Сразу после этого она отправит команду GET для получения значения ключа:

$ redis-cli GET foo

Ожидается ответ $3\r\nbar\r\n: строка bar, закодированная как объёмная строка.

Дождавшись истечения срока действия ключа, тестирующая программа отправит ещё одну команду GET:

$ sleep 0.2 && redis-cli GET foo

Ожидаемый ответ — нулевая объёмная строка ($-1\r\n).

Примечания

  • Как и имена команд, их аргументы нечувствительны к регистру. Поэтому PX, px и pX допустимы.
  • Ключи, значения и сроки действия в тестах будут случайными, поэтому фиксированный ответ не позволит пройти этап.

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

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

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

go / ЛОКАЛЬНО

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

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

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

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