Redis Zcount

Redis Zcount

Redis sortert sett poengsum og rangering

Redis -sorterte sett er den bestilte varianten av den typiske angitte datastrukturen. Hvert sortert settelement er assosiert med to spesielle egenskaper: rang og poengsum. Poengverdien brukes til å bestille de sorterte settelementene i stigende rekkefølge. Videre kan score gjentas mens medlemmene må være unike for et gitt sett. Siden de sorterte setelementene er bestilt, er ADD, oppdatering og fjerne operasjoner raskere. I tillegg tillater denne datastrukturen å spørre elementene i et område etter poengsum eller rangeringsverdi med god ytelse.

Som vist i forrige illustrasjon, har de fleste av de viktigste kommandoene som fungerer på Redis -sett tidskompleksiteten til O (log (N)) som er raskere.

Zcount -kommandoen

Zcount -kommandoen brukes til å spørre om en rekke faste elementer mellom de spesifiserte score. De returnerte elementene er sortert fra den laveste til høyeste poengsum. Hver gang de flere elementene har samme score, bestilles de av leksikografisk orden. Denne kommandoen har også O (Log (N)) tidskompleksitet fordi den bruker rangeringseiendommen når du spør om en rekke elementer. Derfor er det ingen lineært forhold til antall elementer når du måler utførelsestiden.

Følgende er syntaks for Zcount -kommandoen:

Syntaks:

Zcount set_key minimum_score maximum_score

set_key: Nøkkelen til Redis sorterte sett.

minimum_score: Den laveste poengsummen for spesifisert rekkevidde.

maksimum_score: Den høyeste poengsummen for spesifisert rekkevidde.

Min og maksimer av området kan spesifiseres på forskjellige måter. Hver gang du ikke har anelse om de laveste og høyeste mulige score i det sorterte settet, kan -inf og +inf brukes. Den henter ideelt alle elementene i det sorterte settet.

I tillegg inkluderer de spesifiserte minimums- og maksimumsverdiene for området. Hvis du vil at noen av disse verdiene skal være eksklusive, kan "(" -karakteren brukes som i Zrangebyscore kommando.

Denne kommandoen returnerer en heltallverdi som er antall elementer i det angitte området.

Bruk sak - Tell spillerne med en gulltelling mellom et gitt område

Redis sortert sett datastruktur er en ideell kandidat for lagring av toppliste -data. La oss anta et scenario der et online spill tilbyr en mengde gull for spillerne sine når oppdragene er fullført. Basert på hver spillers gullbeløp, må en toppliste implementeres. Vi kan enkelt bruke Redis -sorterte settene til å implementere et slikt toppliste. Gullmengden kan kartlegges som poengsummen til hvert medlem.

La oss lage et sortert sett Gameleaderboard og legg til noen spillere med gullbeløp som vist i det følgende. ZADD -kommandoen brukes til å opprette og legge spillere til det sorterte settet som er lagret på nøkkelen Gameleaderboard:

Zadd Gameleaderboard 1000 "Jack" 450 "Rexy" 3000 "John" 1600 "Mary" 450 "Rakesh"

La oss bruke ZrangeByscore -kommandoen for å sjekke om medlemmene er lagt til og sortert riktig.

zrangebyscore gameleaderboard -inf +inf

Som forventet blir medlemmene lagret og sortert etter score. Siden "Rexy" og "Rakesh" fikk de samme score, blir de bestilt leksikografisk med at "Rakesh" er toppmedlemmet på den returnerte listen.

La oss telle antall elementer i det sorterte settet ved hjelp av Zcount -kommandoen:

Zcount Gameleaderboard -inf +inf

Siden vi fikk fem setemedlemmer, er den returnerte verdien 5 fordi området er fra -infinitet til +uendelig som dekker hele settet.

La oss spesifisere et område fra 1000 til 3000.

Zcount Gameleaderboard 1000 3000

La oss først inspisere settet vårt med ZrangeByscore -kommandoen som vist i følgende:

Zrangebyscore gameleaderboard -inf +inf withscores

Det er tre medlemmer innen 1000 til 3000. Siden 1000 og 3000 er inkluderende som standard, bør den forrige Zcount -kommandoen returnere 3.

La oss bruke "(" -karakteren for å ekskludere 1000 og 3000 score med det samme eksemplet som er vist i forrige eksempel:

Zcount Gameleaderboard (1000 (3000

Siden 1000 og 3000 score er ekskludert, er det eneste venstre medlemmet "Mary" med 1600 poengsum. Derfor er det returnerte antallet 1.

Hver gang du trenger å telle medlemmene mellom en rekke score, anbefales det å bruke Zcount -kommandoen som er enormt raskere.

Konklusjon

Oppsummert brukes Zcount -kommandoen til å telle antall elementer i et gitt utvalg av poengsumverdier. Den har en O (log (n)) tidskompleksitet. Som diskutert, kan det brukes med minimums- og maksimumsverdier for å definere en rekke score som i ZrangeByscore -kommandoen. Min- og maks -verdiene er inkluderende som standard. Som vist tidligere, kan "(" -karakteren brukes til å ekskludere poengsumverdiene. Totalt sett er Zcount -kommandoen enkel å bruke og opererer med god ytelse.