«Наборы Redis — это неупорядоченные наборы строк, не содержащие дубликатов. Они очень похожи на наборы HashSet в Java, наборы Python и т. д. Самое главное, что основные операции, такие как добавление, удаление и проверка существования члена, очень эффективны, поскольку выполняются с временной сложностью O(1)».
Члены набора
Как уже упоминалось, наборы Redis содержат уникальные строковые элементы. Уже существующие элементы не будут приняты наборами Redis и будут проигнорированы. Кроме того, один набор может содержать до 4 миллиардов уникальных строк.
Характер набора Redis, заключающийся в хранении уникальных членов, удобен в нескольких реальных случаях использования.
- Возможность выполнять стандартные операции набора, такие как объединение, пересечение и различие.
- Отслеживание уникальных посетителей сайта
- Представление отношений сущностей реального мира
Команда СКАРД
Команда SCARD, сокращение от Set Cardinality, возвращает количество элементов в наборе, хранящемся в заданном ключе. Он работает с временной сложностью O (1), что означает, что время, необходимое для выполнения команды SCARD, не зависит от количества членов в данном наборе. Это всегда занимает постоянное время.
Команда SCARD имеет очень простой синтаксис, как показано ниже.
СКАРД set_keyset_key: Ключ набора Redis
Эта команда возвращает целочисленное значение, которое представляет собой количество элементов в наборе.
Вариант использования — подсчет уникальных посетителей веб-сайта
Предположим, пиццерия YummyPizza поддерживает веб-сайт yummypizza.com, где люди могут заказать пиццу онлайн. Чтобы отслеживать свои продажи и клиентскую базу, они поддерживают базу данных Redis, в которой ежемесячно хранятся все уникальные посетители веб-сайта.
Всякий раз, когда пользователь посещает веб-сайт YummyPizza, идентификатор пользователя должен быть добавлен в базу данных Redis. Кроме того, один и тот же пользователь не должен быть добавлен в базу данных. Итак, идеальной структурой данных является набор Redis, в котором наборы хранят только уникальные элементы.
Предположим, что сайт посетили пять пользователей, и эти участники добавлены в базу данных Redis, как показано ниже.
SADD YummyPizzaПосетители:Октябрь Джон Мэри Раза Стойнис Принц
Как и ожидалось, было возвращено целое число 5, что означает, что пять членов добавляются к набору, хранящемуся по ключу « Вкусная пиццаПосетители:Октябрь. ”
В конце дня администраторам компании необходимо проверить общее количество уникальных посетителей сайта. Таким образом, необходимо рассчитать кардинальность множества. К счастью, ранее обсуждавшаяся команда SCARD оказывается полезной в этом типе сценария.
Давайте выполним команду SCARD на наборе, хранящемся в ключе « Вкусная пиццаПосетители:Октябрь. ”
Скард YummyPizzaПосетители:Октябрь
Выход равен 5, что означает пять уникальных элементов в указанном наборе. Эта команда выполняется слишком быстро. Неважно пять участников или 50000 участников; время выполнения будет постоянным.
Предположим, что указанный ключ набора не существует в базе данных Redis. Затем на выходе будет 0, как показано в следующем примере. В этом случае мы собираемся указать ключ, которого нет в базе данных.
scard Несуществующий ключ
Вывод
Подводя итог, набор Redis является идеальным кандидатом для хранения уникальных строк. Как уже говорилось, самое важное в наборе Redis заключается в том, что для выполнения большинства связанных операций с наборами требуется постоянное время. Команда SCARD является одной из наиболее часто используемых команд набора для вычисления общего количества элементов набора для данного набора, хранящегося в указанном ключе. Независимо от того, сколько элементов набора доступно, эта команда требует постоянного времени для предоставления вывода. Как показано в последнем примере, если ключ set не существует, вывод будет равен 0.