Проектная лаборатория
Собственный Redis
Этап 92 · Упорядоченные множества
Создание упорядоченного множества
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы добавите создание упорядоченного множества командой ZADD.
Упорядоченные множества Redis
Упорядоченное множество — один из типов данных Redis. Это коллекция уникальных элементов, каждому из которых соответствует оценка — число с плавающей точкой. В отличие от обычных множеств, упорядоченные множества сохраняют элементы в порядке их оценок.
Они удобны для таблиц лидеров, очередей с приоритетом и других задач, где нужен быстрый доступ к элементам, отсортированным по числовому значению.
Например, упорядоченное множество для рейтинга игроков могло бы содержать:
racer_scores:
- member: "Ford"
score: 6.1
- member: "Royce"
score: 8.2
- member: "Sam-Bodden"
score: 8.2
- member: "Prickett"
score: 14.5Элементы располагаются по возрастанию оценок.
Команда ZADD
Команда ZADD добавляет элемент в упорядоченное множество.
Если множества нет, оно создаётся, и в него добавляется элемент.
Пример использования:
> ZADD racer_scores 8.0 "Sam"
(integer) 1ZADD принимает ключ, оценку и имя элемента. Она возвращает целое число — количество новых элементов, добавленных в множество.
Тесты
Тестирующая программа запустит вашу программу так:
$ ./your_program.shЗатем отправит ZADD с ключом, значением и оценкой.
$ redis-cli ZADD zset_key 10.0 zset_memberТест проверит ответ :1\r\n: число 1, количество добавленных элементов, в формате целого числа RESP.
Примечания
- Пока достаточно создавать новое упорядоченное множество с одним элементом. Добавление элементов в существующее множество появится позже.
- Для максимальной точности рекомендуется хранить оценку как 64-битное число с плавающей точкой: официальная реализация Redis использует
double. - Рекомендуем выбрать структуру данных, хранящую элементы в порядке оценок. Это пригодится позже.
- Redis реализует упорядоченные множества сочетанием хеш-таблицы и списка с пропусками.
Проверка в вашей 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 ct1Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.