Redis SCARD

Redis Scard



„Наборите Redis са неподредени колекции от низове, които не съдържат дубликати. Те са много подобни на Java HashSets, Python Sets и т.н. Най-важното е, че фундаментални операции като добавяне, премахване и проверка на съществуването на член са много ефективни, защото работят в O(1) времева сложност.

Членове на множество

Както споменахме, наборите на Redis съдържат уникални низови елементи. Вече съществуващите елементи няма да бъдат приети от наборите на Redis и ще бъдат игнорирани. Освен това, един комплект може да съдържа до 4 милиарда уникални низа.









Естеството на набора Redis да държи уникални членове е полезно в няколко случая на употреба в реалния свят.



  • Възможност за извършване на операции със стандартни набори като Union, Intersection и Difference.
  • Проследяване на уникални посетители на уебсайт
  • Представлява отношения на субекти от реалния свят

Командата SCARD

Командата SCARD, съкратено от Set Cardinality, връща броя на членовете в набор, съхранен при даден ключ. Той работи с времева сложност O(1), което означава, че времето, необходимо за изпълнение на командата SCARD, не зависи от броя на членовете в дадения набор. Винаги отнема постоянно време.





Командата SCARD има много прост синтаксис, както е показано по-долу.

SCARD set_key

set_key: Ключът на комплекта Redis



Тази команда връща цяло число, което е броят на членовете в набора.

Случай на използване – Преброяване на отделните посетители на уебсайт

Да приемем, че компания за пица „YummyPizza“ поддържа уебсайт, наречен yummypizza.com, където хората могат да поръчат пица онлайн. За да следят своите продажби и клиентска база, те поддържат база данни на Redis, за да съхраняват всички уникални посетители на уебсайта всеки месец.

Всеки път, когато потребител посети уебсайта YummyPizza, потребителският идентификатор трябва да бъде добавен към базата данни на Redis. Освен това същият потребител не трябва да се добавя и към базата данни. И така, идеалната структура на данните е наборът Redis, където наборите съхраняват само уникални членове.

Да приемем, че петима потребители са посетили уебсайта и тези членове са добавени към базата данни на Redis, както е показано по-долу.

SADD YummyPizzaVisitors: Октомври Джон Мери Раза Стойнис Принц

Както се очаква, цялото число 5 е върнато, което означава, че петте члена са добавени към набора, съхранен в ключ ' YummyPizzaПосетители: октомври.

В края на деня администраторите на компанията трябва да проверят общия брой уникални посетители на уебсайта. Така че кардиналността на набора трябва да бъде изчислена. За щастие, обсъжданата по-рано команда SCARD е полезна в този тип сценарий.

Нека изпълним командата SCARD на набора, съхранен в ключ ' YummyPizzaПосетители: октомври.

scard YummyPizzaПосетители: октомври

Изходът е 5, което означава, че пет уникални члена са в посочения набор. Тази команда се изпълнява твърде бързо. Няма значение пет члена или 50 000 членове; времето за изпълнение ще бъде постоянно.

Да приемем, че зададеният наборен ключ не съществува в базата данни на Redis. Тогава изходът ще бъде 0, както е показано в следващия пример. В този случай ще посочим ключ, който не е в базата данни.

scard NonExistingKey

Заключение

За да обобщим, Redis set е идеален кандидат за съхраняване на уникални низове. Както беше обсъдено, най-важното нещо за набора Redis е, че повечето от свързаните операции с набор отнемат постоянно време за изпълнение. Командата SCARD е една от най-използваните команди за набор за изчисляване на общия брой членове на набор за даден набор, съхранен в определен ключ. Без значение колко членове на набора са налични, тази команда отнема постоянно време, за да предостави изхода. Както е показано в последния пример, ако зададеният ключ не съществува, изходът ще бъде 0.