Redis Zset

Redis Zset

“Vil du implementere et sanntids toppliste for ditt neste online spill med Redis? Redis gir en ut-av-boks-løsning for dette med Zsets, som er et kort navn for Redis -sorterte sett og er et verktøy som hver Redis -bruker må være kjent med.

Redis Zset er en bestilt samling av unike medlemmer der hvert medlem er assosiert med en poengsumverdi. For å fremheve, bestilles ZSETs av poengverdien som standard, noe som gjør dem ganske forskjellige fra den vanlige settetypen. I tillegg kan mer enn ett medlem ha samme poengverdi, og medlemmene vil bli beordret leksikografisk i så fall. Redis ZSETs er et bedre valg for prioriterte køer, sekundærindeksering, topplatens topplater og hastighetsbegrensere. Fordi ZSETs gir sanntidskrav som respons og tilgang til lav latens med lav latens.

Videre tildeles hvert medlem en rangeringsverdi basert på deres posisjon i Zset som er mer som en 0-basert indeks i en Java-gruppe.”

En rask titt på grunnleggende Zset -kommandoer

Flere grunnleggende kommandoer er tilgjengelige for å legge til, hente og fjerne medlemmer fra et Zset (sortert sett) lagret på en gitt Zset -tast. La oss se raskt på tre hovedkommandoer: Zadd, Zrange, Zrank og Zrem.

En sanntid Pokemon Eksempel på spillet vil bli demonstrert her.

ZADD -kommando

Ved brukerregistrering må vi legge til hver bruker til vår Zset som er navngitt Pokemon: Leaderboard. Så Zadd -kommandoen er den ideelle kandidaten til å bruke som følger. Anta at vi fikk fem spillere registrert innledningsvis. Så poengene vil bli tildelt 0.

Zadd Pokemon: Leaderboard 0 John

Returverdien er 1, noe som betyr at ett medlem er lagt til ZSET lagret på Key Pokemon: Leaderboard. Hvis medlemmet allerede er tilgjengelig i den gitte Zset, vil bare poengverdien bli oppdatert.

Vi er alle gode til å fortsette. Så la oss gå foran og legge de resterende fire spillerne til Zset: Pokemon: Leaderboard.

Zadd Pokemon: Leaderboard 0 Anna
Zadd Pokemon: Leaderboard 0 Zakariah
Zadd Pokemon: Leaderboard 0 Bob
Zadd Pokemon: Leaderboard 0 Mary

Zrange -kommando

Alle de fem medlemmene er lagt til vellykket. Deretter bør vi undersøke eller spørre de ekstra medlemmene ved hjelp av Zrange -kommandoen. Zrange -kommandoen tillater å hente medlemmer som er sortert i et gitt område. Et område kan spesifiseres etter rang, poengsum eller leksikografiske verdier.

La oss spørre alle medlemmene ved å spesifisere rekkevidden etter rangeringsverdier.

Zrange Pokemon: Leaderboard 0 -1

Som forventet har alle fem medlemmene blitt returnert og bestilt leksikografisk fordi poengverdiene er de samme for alle medlemmer på dette tidspunktet. I tillegg er 0 startindeksen/rangering av området, og -1 betegner toppindeksen for den gitte Zset.

Zrange -kommandoen tilbyr et bredt spekter av valgfrie argumenter, og vi vil bruke Withscores -argumentet med ovennevnte kommando for å vise tilhørende poengsum for hvert medlem.

Zrange Pokemon: Leaderboard 0 -1 Withscores

Zincrby Command

Anta at spillerne har spilt spillet i noen timer og score har økt fra 0. Redis Zsets gir Zincrby -kommandoen for å øke poengene til hvert medlem som følger.

Zincrby Pokemon: Leaderboard 100 Bob

Dette bør øke verdien av medlemmet Bob fra 0 til 100. La oss kalle den samme kommandoen for å øke poengene til andre spillere også.

Zincrby Pokemon: Leaderboard 200 Anna
Zincrby Pokemon: Leaderboard 76 Zakariah
Zincrby Pokemon: Leaderboard 450 Mary
Zincrby Pokemon: Leaderboard 167 John

I henhold til returverdiene skal score blitt oppdatert riktig. La oss bruke Zrange -kommandoen en gang for å hente medlemmene igjen med score.

Bravo! Spillernes poengsum er blitt oppdatert på riktig måte. Videre bestilles medlemmene av sine score i stigende rekkefølge, som er et kult trekk ved Redis Zsets.

Zrevrank -kommando

Det er et must å vise rangering av hver spiller på en toppliste. Så Zrevrank -kommandoen brukes til å vise rangering av medlemmer der elementet assosiert med den høyeste poengsum vil være den 0. rangering, og neste høyeste vil være 1. rangering, og så videre.

Siden medlem Mary Har den høyeste poengsummen, bør det elementet rangeres som toppmedlemmet med 0. rang. La oss bruke Zrevrank -kommandoen som følger.

Zrevrank Pokemon: Leaderboard Mary

Som forventet er rangering 0, noe som betyr toppspilleren i spillets toppliste.

La oss bruke Zrevrank -kommandoen med elementet Zakariah som følger. Ideelt sett bør det være den siste rangering siden dette medlemmet har den laveste poengsummen.

ZREM -kommando

Hver gang vi trenger å fjerne et element eller flere elementer fra et Zset, er ZREM -kommandoen nyttig. La oss fjerne Zakariah fra topplisten på grunn av hans lave poengsum.

Zrem Pokemon: Leaderboard Zakariah

Den er fjernet ordentlig fra Zset.

Det viktigste er at Zset -kommandoene har O (log (N)) tidskompleksitet, der n er antall elementer i det sorterte settet, som er betydelig raskere. Samtidig bør Zrange -kommandoen brukes med omhu fordi den har O (log (N) + L), der L er antallet resultater som returneres av kommandoen. Så det kan forårsake ytelsesproblemer når du jobber med større datasett.

Konklusjon

Oppsummert er Redis Zset et kort navn for en sortert sett datatype som kan holde unike medlemmer bestilt etter poengsummenes verdier. Som diskutert er Zset-medlemmene ikke-gjentatte strenger, og scoreverdier kan gjentas. Når flere medlemmer blir tildelt med samme poengverdi, vil disse medlemmene bli bestilt leksikografisk. ZSETS er et godt valg for sanntids toppliste, sekundærindeksering og prioriterte køer med høyere respons og lav latens i minnetilgang. For å konkludere, er flere kommandoer tilgjengelige for å legge til, fjerne og spørringsmedlemmer fra en gitt Redis Zset med letthet.