Операции с сортированными множествами
В Managed Valkey все управление сортированными множествами выполняется командами Valkey. С полным списком команд Valkey вы можете ознакомиться в официальной документации Valkey.
Обратите внимание, что в Managed Valkey некоторые команды Valkey недоступны.
Получить участников по диапазону
Заголовок раздела «Получить участников по диапазону»Чтобы получить участников сортированного множества по диапазону, используйте команду ZRANGE.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имя ключа с помощью итеративного обхода.
Убедитесь, что значение ключа — сортированное множество. Должно вернуться значение
zset.Выполните нужную команду:
- Получить участников по индексам
- Получить участников по весу
text ZRANGE <имя ключа> <начало> <конец> [REV] [WITHSCORES]Индексация начинается с
0,-1означает последнего участника. Обе границы будут включены. Диапазон0 -1охватит всех участников. По умолчанию порядок будет соответствовать возрастанию веса, сREV— убыванию.Параметр
WITHSCORESдобавит в ответ веса участников. Команда вернет участников диапазона, данные сохранятся. Если ключ не существует или диапазон пуст, вернется пустой список. При одинаковых весах участники будут упорядочены лексикографически по байтам, а сREV— в обратном порядке.
Получить количество участников
Заголовок раздела «Получить количество участников»Чтобы получить количество участников сортированного множества, используйте команду ZCARD.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имя ключа с помощью итеративного обхода.
Убедитесь, что значение ключа — сортированное множество. Должно вернуться значение
zset.Выполните команду:
text ZCARD <имя ключа>Команда вернет количество участников сортированного множества. Если ключ не существует, команда вернет
0.
Добавить участников с весом
Заголовок раздела «Добавить участников с весом»Чтобы добавить участников с весом в сортированное множество, используйте команду ZADD.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Убедитесь, что значение ключа — сортированное множество. Должно вернуться значение
zset.Выполните команду:
text ZADD <имя ключа> [NX | XX] [CH] <вес 1> <участник 1> [<вес 2> <участник 2> ...]В команде:
<вес>— число, определяющее положение участника. Для дробного числа используйте точку.NX— добавить только новых участников.XX— изменить вес только существующих участников.CH— включить в ответ не только число добавленных участников, но и число участников с измененным весом.
Без
NXилиXXкоманда добавит новых участников и обновит вес существующих. Если ключ не существует, команда создаст сортированное множество, кроме случая сXX. При изменении веса положение участника будет пересчитано. Участники с одинаковым весом будут упорядочены лексикографически по байтам их значений.По умолчанию команда вернет количество добавленных участников. С
CHвернется суммарное количество добавленных участников и участников с измененным весом. Если изменений не произойдет, вернется0.
Получить вес участника
Заголовок раздела «Получить вес участника»Чтобы получить вес участника сортированного множества, используйте команду ZSCORE.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имя ключа с помощью итеративного обхода.
Убедитесь, что значение ключа — сортированное множество. Должно вернуться значение
zset.Узнайте имя участника.
Выполните команду:
text ZSCORE <имя ключа> <участник>Команда вернет вес участника. Если ключ или участник не существует, команда вернет
nil.
Увеличить вес участника
Заголовок раздела «Увеличить вес участника»Чтобы увеличить вес участника сортированного множества, используйте команду ZINCRBY.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Убедитесь, что значение ключа — сортированное множество. Должно вернуться значение
zset.Узнайте имя участника.
Выполните команду:
text ZINCRBY <имя ключа> <шаг> <участник>В команде
<шаг>— число, на которое нужно изменить вес. Для уменьшения укажите отрицательный шаг. Для дробного числа используйте точку, например0.5.Команда изменит вес, пересчитает положение участника и вернет новый вес. Если участник отсутствует, он будет добавлен с весом, равным шагу. Если ключ не существует, команда создаст сортированное множество.
Получить ранг участника
Заголовок раздела «Получить ранг участника»Чтобы получить ранг участника сортированного множества, используйте одну из команд:
- ZRANK — получить позицию при упорядочивании по возрастанию веса;
- ZREVRANK — получить позицию при упорядочивании по убыванию веса.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имя ключа с помощью итеративного обхода.
Убедитесь, что значение ключа — сортированное множество. Должно вернуться значение
zset.Узнайте имена участников.
Выполните нужную команду:
- ZRANK
- ZREVRANK
text ZRANK <имя ключа> <участник>Команда вернет ранг участника, начиная с
0. ДляZRANKранг0получит первый участник с минимальным весом.При одинаковых весах будет учитываться лексикографический порядок значений, обратный для
ZREVRANK. Если ключ или участник не существует, команда вернетnil.
Получить пересечение или объединение сортированных множеств
Заголовок раздела «Получить пересечение или объединение сортированных множеств»Чтобы сохранить пересечение или объединение сортированных множеств, используйте одну из команд:
- ZINTERSTORE — сохранить участников, которые есть во всех исходных множествах;
- ZUNIONSTORE — сохранить участников, которые есть хотя бы в одном исходном множестве.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Для работы с существующими ключами узнайте их имена с помощью итеративного обхода.
Выберите отдельное имя целевого ключа. Проверьте, существует ли он. Прежнее значение будет заменено результатом.
Убедитесь, что значение ключа — сортированное множество. Должно вернуться значение
zset.Выполните нужную команду:
- ZINTERSTORE
- ZUNIONSTORE
text ZINTERSTORE <имя целевого ключа> <количество ключей> <имя ключа 1> [<имя ключа 2> ...] [WEIGHTS <коэффициент 1> [<коэффициент 2> ...]] [AGGREGATE <способ>]В командах:
- Значение
<количество ключей>— положительное целое число исходных ключей, которое должно совпадать с числом перечисленных имен. WEIGHTS— коэффициенты умножения весов: по одному для каждого исходного ключа в том же порядке. Если параметр не указан, все коэффициенты будут равны1.AGGREGATE SUM— сложить веса участника после умножения на коэффициенты. Этот способ будет использован по умолчанию.AGGREGATE MINилиAGGREGATE MAX— выбрать минимальный или максимальный вес участника после умножения на коэффициенты.
Несуществующие исходные ключи будут учтены как пустые множества. При объединении вес участника будет рассчитан только по тем множествам, в которых он есть.
Команда сохранит результат как сортированное множество и вернет количество участников результата. Существующий целевой ключ будет перезаписан независимо от типа значения. При пустом результате целевой ключ будет удален. Чтобы сохранить все исходные множества, укажите отдельное имя целевого ключа.
Итеративно обойти участников
Заголовок раздела «Итеративно обойти участников»Чтобы итеративно обойти участников и веса сортированного множества, используйте команду ZSCAN.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имя ключа с помощью итеративного обхода.
Убедитесь, что значение ключа — сортированное множество. Должно вернуться значение
zset.Начните обход с курсора
0:text ZSCAN <имя ключа> 0 [MATCH <шаблон>] [COUNT <количество>]В команде
MATCH <шаблон>— отобрать участников по шаблону, аCOUNT <количество>— задать положительное целое число как ориентир объема работы за вызов. Количество результатов может отличаться от указанного.Команда вернет следующий курсор и пары участников и весов.
Подставляйте полученный курсор в следующий вызов. Используйте тот же ключ и условия отбора:
text ZSCAN <имя ключа> <курсор> [MATCH <шаблон>] [COUNT <количество>]Обход завершится, когда команда вернет курсор
0. Если ключ не существует, сразу вернутся курсор0и пустой список. Порядок участников по весу не будет гарантирован.
Извлечь участника сортированного множества с блокировкой
Заголовок раздела «Извлечь участника сортированного множества с блокировкой»Чтобы извлечь участника сортированного множества с ожиданием его появления, используйте одну из команд:
- BZPOPMIN — извлечь участника с минимальным весом;
- BZPOPMAX — извлечь участника с максимальным весом.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имя ключа с помощью итеративного обхода.
Убедитесь, что значение ключа — сортированное множество. Должно вернуться значение
zset.Выполните нужную команду:
- BZPOPMIN
- BZPOPMAX
text BZPOPMIN <имя ключа 1> [<имя ключа 2> ...] <таймаут>В командах
<таймаут>— неотрицательное время ожидания в секундах. Значение0задаст ожидание без ограничения времени со стороны команды.Если при вызове есть непустые множества, команда выберет первое из них в порядке указания ключей. Минимальный или максимальный вес будет определен внутри этого множества. Команда удалит участника и вернет имя ключа, участника и его вес.
Если все множества отсутствуют, соединение будет ожидать, пока участник добавится другим клиентом. При истечении таймаута без появления участника вернется
nil. Ожидание заблокирует текущее соединение, но другие клиенты смогут выполнять команды. После извлечения последнего участника ключ сортированного множества будет удален.
Удалить участников по диапазону
Заголовок раздела «Удалить участников по диапазону»Чтобы удалить участников сортированного множества по диапазону, используйте одну из команд:
- ZREMRANGEBYRANK — удалить участников по рангам;
- ZREMRANGEBYSCORE — удалить участников по весу.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имя ключа с помощью итеративного обхода.
Убедитесь, что значение ключа — сортированное множество. Должно вернуться значение
zset.Проверьте участников диапазона. Состав множества мог измениться между чтением и удалением.
Выполните нужную команду:
- ZREMRANGEBYRANK
- ZREMRANGEBYSCORE
text ZREMRANGEBYRANK <имя ключа> <начало> <конец>Ранги отсчитываются от
0по возрастанию веса. Отрицательные значения задают позиции от конца, например-1— последнюю позицию. Обе границы будут включены.Команда вернет количество удаленных участников. Если ключ не существует или диапазон не содержит участников, команда вернет
0. После удаления всех участников ключ сортированного множества будет удален.
Удалить участников
Заголовок раздела «Удалить участников»Чтобы удалить участников сортированного множества, используйте команду ZREM.
Подключитесь к кластеру.
Переключитесь на нужную базу данных.
Узнайте имя ключа с помощью итеративного обхода.
Убедитесь, что значение ключа — сортированное множество. Должно вернуться значение
zset.Узнайте имена участников.
Выполните команду:
text ZREM <имя ключа> <участник 1> [<участник 2> ...]Команда удалит указанных участников и вернет количество удаленных участников. Несуществующие участники будут пропущены. Если ключ не существует, команда вернет
0. После удаления последнего участника ключ сортированного множества будет удален.