Redis Zrevrange

Redis Zrevrange
“Den sorterte settdatastrukturen er en spesiell datatype introdusert av Redis der de lagrede elementene er bestilt i stigende rekkefølge. Medlemmene som er lagret i et sortert sett er mer som feltverdipar av en Redis-hasj. Hvert medlem er assosiert med en poengsum og rangering der spørringen kan gjøres av begge egenskapene. Rangering eller indeks er tilordnet hvert medlem fra null; neste element er ett, og så videre. Også indeksen kan være en negativ verdi. -1 -rangering indikerer det siste medlemmet av det sorterte settet. Elementet ved siden av det siste elementet er betegnet med -2 ​​-indeksen og så videre.

Zrevrange- og Zrange -kommandoene er i stand til å hente medlemmer mellom et spesifisert utvalg av indekser av et sortert sett som er lagret på en gitt nøkkel. Disse kommandoene aksepterer både de positive og negative indeksverdiene når du spør om medlemmene i et gitt område. I denne guiden vil vi fokusere på Zrevrange -kommandoen og dens praktiske bruk.”

Redis Zrevrange Command

Zrevrange -kommandoen brukes til å spørre medlemmene mellom spesifiserte minimums- og maksimale indeksverdier for et sortert sett som er lagret på en gitt nøkkel. Medlemmene blir returnert i synkende rekkefølge basert på poengsummen. Hver gang de flere medlemmene har samme poengsum, vil elementene bli bestilt leksikografisk.

Syntaks

Zrevrange sorted_set_key start_index end_index [withscores]

sorted_set_key: Dette er den unike IDen som identifiserer det sorterte settet i Redis Data Store

start_index: Startindeksen for området som er spesifisert

END_INDEX: Sluttindeksen for det spesifiserte området

[Withscores]: Dette er et valgfritt argument når spesifiserte medlemmer blir returnert med score.

Kommandoen vil returnere en rekke medlemmer som er lagret mellom det spesifiserte indeksområdet. Hvis Withscores Argumentet er spesifisert, poengsumene vil bli inkludert i utdataene.

Eksempel: Returner spillerne som har fullført flest antall nivåer i et online spill

La oss anta et online fellesskapsspill der hver spiller er rangert basert på antall fullførte nivåer. På slutten av hver uke får de tre beste spillerne bonusgaver. Derfor må vi spørre de tre beste spillerne som har fullført flest antall nivåer i spillet. Vi kan tilordne antall fullførte nivåer som poengsummen til et medlem som er lagret i et Redis -sortert sett.

Først vil vi legge til noen få spillere til et sortert sett som heter Gameleaderboard.

Zadd Gameleaderboard 4 Player: 1
Zadd Gameleaderboard 2 -spiller: 3
Zadd Gameleaderboard 5 -spiller: 2
Zadd Gameleaderboard 1 -spiller: 4
Zadd Gameleaderboard 10 -spiller: 5

I eksemplet ovenfor, Spiller: 1 har fullført 4 nivåer, Spiller: 5 har fullført 10 nivåer, og så videre. Ovennevnte informasjon om en spiller er kartlagt til et sortert sett, som vist i det følgende.

La oss bruke Zrevrange -kommandoen til å spørre om alle medlemmene som har fullført nivået er høyere og går til toppen av listen.

Zrevrange gameleaderboard 0 4

Som i illustrasjonen ovenfor, spredte de sorterte settindeksene seg fra 0 til 4. Derfor spesifiserte vi start- og sluttindeksene som henholdsvis 0 og 4, som ideelt sett skulle returnere alle medlemmene som tilhører det sorterte settet som er identifisert av nøkkelen Gameleaderboard as du kan se, det har bestilt medlemmene på en måte som de beste spillerne har flest antall fullførte nivåer i spillet.

Spørringsmedlemmer med score
Zrange -kommandoen kan brukes med Withscores valgfritt argument for å vise poengsumverdiene til hver spiller i eksemplet ovenfor.

Zrevrange gameleaderboard 0 4 withscores

Produksjon

Spørringsmedlemmer som starter fra slutten av det sorterte settet
I alle eksemplene ovenfor har vi brukt den 0-baserte indeksen som teller fra starten av det sorterte settet. Vi kan spesifisere indeksområdet fra slutten av det sorterte settet også. La oss si at vi trenger å spørre spillerne hvis score er de laveste ved hjelp av Zrevrange -kommandoen.

Zrevrange gameleaderboard -3 -1 withscores

I dette tilfellet har sluttindeksen blitt spesifisert som -1, som betyr det siste elementet. Startindeksen er -3. Derfor vil det spørre medlemmer opp til det tredje medlemmet fra slutten av det sorterte settet. Dette er veldig tydelig hvis du bruker figuren ovenfor, som viser hvordan indeksene kan brukes på begge måter.

Zrange -kommandoen i stedet for Zrevrange

Zrevrange -kommandoen har blitt utdatert fra Redis versjon 6.2.0. Derfor anbefales det å bruke Zrange -kommandoen med det valgfrie Rev -argumentet, som oppfører seg det samme som Zrevrange -kommandoen.

Konklusjon

For å oppsummere, brukes Zrevrange -kommandoen til å spørre om medlemmer mellom et spesifisert minimums- og maksimumsindeks fra et Redis -sortert sett som er lagret på en gitt nøkkel. Den henter medlemmene som er lagret mellom de spesifiserte indeksverdiene i omvendt rekkefølge. Bortsett fra den omvendte bestillingen av medlemmene, oppfører denne kommandoen seg lik Zrange -kommandoen. Som nevnt ovenfor har den en logaritmisk tidskompleksitet som gjør kommandoen ganske rask å bruke i sanntidsapplikasjoner effektivt. Derfor er Zrevrange -kommandoen ideell å bruke når du trenger å hente elementer i synkende rekkefølge fra et sortert sett.