redis
Сортированные наборы
Поиск…
Вступление
Тип данных Sorted Set в Redis является упорядоченной версией типа данных Set. Сортированный набор Redis состоит из коллекции уникальных членов. Каждый член в сортированном наборе может рассматриваться как пара, состоящая из члена и оценки. Счет используется для упорядочивания членов в наборе в порядке возрастания.
Синтаксис
- ZADD ключ [NX | XX] [CH] [INCR] оценка участник [оценка участник ...]
- Ключ ZCARD
- Ключ ZCOUNT мин. Макс.
- Ключ ZLEXCOUNT мин. Макс.
замечания
Официальную документацию для Sorted Sets можно найти на сайте Redis.io .
Сортированные наборы иногда называются zsets. Если вы используете команду TYPE на сортированном наборе ключей, значение zset будет возвращено.
Добавление элементов в отсортированный набор
Redis предоставляет команду ZADD для добавления элементов в отсортированный набор. Основной формой команды ZADD является указание набора, добавляемого элемента и его оценки. Например, если бы я хотел построить упорядоченный набор моей любимой пищи (от наименьшего к большему), я мог бы использовать любой из:
zadd favs 1 apple
zadd favs 2 pizza
zadd favs 3 chocolate
zadd favs 4 beer
или альтернативно:
zadd favs 1 apple 2 pizza 3 chocolate 4 beer
Функция ZADD работает аналогично функции SADD с несортированным множеством. Результатом команды ZADD является количество элементов, которые были добавлены. Поэтому, после создания моего набора, как указано выше, если я снова попытаюсь пить ZADD:
ZADD favs 4 beer
Я бы получил 0 результат, если бы решил, что лучше шоколад, чем пиво, я мог бы выполнить:
ZADD favs 3 beer 4 chocolate
чтобы обновить мои настройки, но я все равно получаю результат с возвратом 0, так как пиво и шоколад уже находятся в наборе.
Подсчет элементов в отсортированном наборе
Redis предоставляет три команды для подсчета элементов в отсортированном наборе: ZCARD, ZCOUNT, ZLEXCOUNT.
Команда ZCARD является основным тестом для мощности набора. (Это аналогично команде SCARD для наборов.). ZCARD возвращает количество элементов набора. Выполнение следующего кода для добавления элементов в набор:
zadd favs 1 apple
zadd favs 2 pizza
zadd favs 3 chocolate
zadd favs 4 beer
работает ZCard:
zcard favs
возвращает значение 4.
Команды ZCOUNT и ZLEXCOUNT позволяют подсчитать подмножество элементов в отсортированном наборе на основе диапазона значений. ZCOUNT позволяет вам подсчитывать элементы в определенном диапазоне баллов, а ZLEXCOUNT позволяет подсчитать количество элементов в определенном лессографическом диапазоне.
Используя наш набор выше:
zcount favs 2 5
вернет 3, так как есть три предмета (пицца, шоколад, пиво), которые имеют баллы от 2 до 5 включительно.
ZLEXCOUNT предназначен для работы с наборами, где каждый элемент имеет одинаковую оценку, форсирование и упорядочивание имен элементов. Если мы создали такой набор, как:
zadd favs 1 apple
zadd favs 1 pizza
zadd favs 1 chocolate
zadd favs 1 beer
мы могли бы использовать ZLEXCOUNT для получения количества элементов в определенном лексографическом диапазоне (это делается побайтовым сравнением с использованием функции memcpy).
zlexcount favs [apple (chocolate
вернется 2, поскольку два элемента (яблоко, пиво) попадают в диапазон яблока (включительно) и шоколада (эксклюзивный). В качестве альтернативы мы могли бы сделать оба конца включительно:
zlexcount favs [apple [chocolate
и получить результат 3.