'Redis-sæt er uordnede samlinger af strenge, der ikke indeholder dubletter. Disse minder meget om Java HashSets, Python Sets osv. Vigtigst af alt er grundlæggende operationer som tilføjelse, fjernelse og kontrol af eksistensen af et medlem meget effektive, fordi de opererer i O(1) tidskompleksitet.'
Medlemmer af et sæt
Som nævnt indeholder Redis-sæt unikke strengemner. De allerede eksisterende elementer vil ikke blive accepteret af Redis-sæt og vil blive ignoreret. Desuden kan et enkelt sæt rumme op til 4 milliarder unikke strenge.
Redis-sættets karakter af at have unikke medlemmer er praktisk i adskillige brugssager i den virkelige verden.
- Evne til at udføre standardsætoperationer som Union, Intersection og Difference.
- Sporing af unikke besøgende på et websted
- Repræsenter entitetsrelationer i den virkelige verden
SCARD-kommandoen
SCARD-kommandoen, forkortelse for Set Cardinality, returnerer antallet af medlemmer i et sæt, der er gemt ved en given nøgle. Det fungerer i O(1) tidskompleksitet, hvilket betyder, at den tid, SCARD-kommandoen tager at udføre, ikke afhænger af antallet af medlemmer i det givne sæt. Det tager altid en konstant tid.
SCARD-kommandoen har en meget simpel syntaks, som vist i det følgende.
SCARD set_keysæt_nøgle: Nøglen til Redis-sættet
Denne kommando returnerer en heltalsværdi, som er antallet af medlemmer i sættet.
Use Case – Tæl de unikke besøgende på et websted
Antag, at et 'YummyPizza'-pizzafirma vedligeholder et websted kaldet yummypizza.com, hvor folk kan bestille pizza online. For at holde styr på deres salg og kundebase vedligeholder de en Redis-database til at gemme alle de unikke besøgende på hjemmesiden hver måned.
Når en bruger besøger YummyPizza-webstedet, skal bruger-id'et tilføjes til Redis-databasen. Den samme bruger bør heller ikke føjes til databasen. Så den ideelle datastruktur er Redis-sættet, hvor sæt kun gemmer unikke medlemmer.
Lad os antage, at fem brugere har besøgt hjemmesiden, og disse medlemmer tilføjes til Redis-databasen, som vist i det følgende.
SADD YummyPizzaBesøgende:Oktober John Mary Raza Stoinis Prince
Som forventet er heltal 5 blevet returneret, hvilket betyder, at de fem medlemmer føjes til sættet, der er gemt på tasten ' YummyPizzaVisitors:Oktober. ”
I slutningen af dagen skal virksomhedens administratorer kontrollere det samlede antal unikke besøgende på hjemmesiden. Så sæt-kardinaliteten skal beregnes. Heldigvis er den tidligere omtalte SCARD-kommando nyttig i denne type scenarie.
Lad os udføre SCARD-kommandoen på sættet, der er gemt på tasten ' YummyPizzaVisitors:Oktober. ”
scard YummyPizzaVisitors:Oktober
Outputtet er 5, hvilket betyder, at fem unikke medlemmer er i det specificerede sæt. Denne kommando udføres for hurtigt. Det er lige meget fem medlemmer eller 50000 medlemmer; udførelsestiden vil være konstant.
Antag, at den angivne sætnøgle ikke findes i Redis-databasen. Så vil outputtet være 0, som vist i det følgende eksempel. I dette tilfælde skal vi angive en nøgle, der ikke er i databasen.
scard NonExistingKey
Konklusion
For at opsummere er Redis sæt en ideel kandidat til lagring af unikke strenge. Som nævnt er det vigtigste ved Redis-sæt, at de fleste af de tilknyttede sæt-operationer tager konstant tid at udføre. SCARD-kommandoen er en af de mest brugte sætkommandoer til at beregne det samlede antal sætmedlemmer for et givet sæt, der er gemt på en specificeret nøgle. Uanset hvor mange sætmedlemmer der er tilgængelige, tager denne kommando konstant tid at levere output. Som vist i det sidste eksempel, hvis sætnøglen ikke eksisterer, vil outputtet være 0.