Hvordan du bruker redis sortert sett

Hvordan du bruker redis sortert sett
Sorterte sett er en av de mest verdifulle og avanserte datatypene i Redis. Sorterte sett er veldig likt sett fordi de begge inneholder ikke-repeterende strengsekvenser. I motsetning til standardsett, inkluderer sorterte sett imidlertid en poengsum som er tilknyttet hvert medlem.

Poengverdien gjør at de kan sorteres i en bestemt rekkefølge. Hvert medlem av et sortert sett må være unikt, men kan dele en scoreverdi med flere medlemmer.

I denne opplæringen lærer du alt om de sorterte settene i Redis og hvordan du kan bruke dem i databasene dine.

Forsikre deg om at du har en eksisterende Redis -server installert og kjører for å følge denne opplæringen.

Opprette sorterte sett

For å lage et sortert sett i Redis, bruk Zadd -kommandoen i Redis CLI. Zadd -kommandoen tar tre hovedargumenter.

Den første er navnet på nøkkelen som holder det sorterte settet.

Det andre argumentet holder medlemmets poengsum som blir lagt til det sorterte settet.

Det endelige og tredje argumentet er den faktiske verdien av medlemmet i det sorterte settet.

Merk: Rekkefølgen på argumentene betyr noe som hver representerer verdiene som diktert ovenfor.

Ta en titt på eksemplet vist nedenfor.

127.0.0.1: 6379> Zadd Captain 1 "Jonathan Archer"

Kommandoen over oppretter et sortert sett som inneholder navnene på Star Trek -kapteiner. I eksemplet over har verdien av "Jonathan Archer" en poengsum på 1.

Kommandoen returnerer en heltallverdi som indikerer det totale antall medlemmer som er lagt til det sorterte settet.

Redis begrenser deg ikke til å legge til et enkelt medlem til settet. Du kan legge til flere verdier. For eksempel:

Zadd Captain 2 "Carol Freeman" 4 "Christopher Pike" 1 "Jean-Luc Picard" 3 "Kathryn Janeway.""

Du vil merke to hoved ting i kommandoen over:

  1. Først trenger ikke poengsummen for hvert medlem i det sorterte å være sekvensiell. Du kan tilordne en poengsum på 100 til et medlem selv om de andre score ikke er satt til noen verdi.
  2. For det andre kan et medlem ha en lignende poengsum som et annet medlem i det sorterte settet.

ZADD -kommandoalternativer.

ZADD -kommandoen godtar flere alternativer for å endre sin oppførsel og funksjonalitet. Disse alternativene inkluderer:

  1. NX - NX -alternativet forteller ZADD -kommandoen bare å legge til nye medlemmer. Dette alternativet forhindrer kommandoen i å oppdatere eksisterende medlemmer i det spesifiserte settet.
  2. På den annen side vil XX - XX -alternativet bare oppdatere de eksisterende medlemmene og ikke legge til nye medlemmer til settet.

Merk: NX- og XX -alternativene er motstridende. Derfor kan du bare bruke ett alternativ i en enkelt kommando.

  1. CH - CH -alternativet ber Zadd ta med antall endrede varer. Som standard vil ZADD bare returnere antall nylig tilførte varer. ZADD -kommandoen vil returnere antall ekstra elementer og oppdaterte elementer ved hjelp av CH -alternativet.
  2. Incr - Incr -alternativet forteller ZADD -kommandoen om å øke medlemmets poengsum. Hvis det spesifiserte medlemmet ikke eksisterer i det sorterte settet, vil Redis opprette det automatisk og angi økning som poengsum.

Merk: Bruke Zincrby -kommandoen i stedet for Zadd med Incr -alternativet anbefales. De utfører begge den samme funksjonen.

Hente medlemmer fra et sortert sett

For å hente medlemmer av et sortert sett i Redis, bruk Zrange -kommandoen. Kommandoen tar navnet på nøkkelen og et bestemt utvalg av medlemmene du vil hente. Områdeverdiene til det sorterte settets medlemmer er nullbaserte indekser. Derfor er det første medlemmet i settet på indeks 0.

For eksempel, for å hente medlemmene fra indeks 0 til 10, angi kommandoen:

127.0.0.1: 6379> Zrange Captain 0 10

Kommandoen vil returnere medlemmene innenfor det angitte området. Eksempelutgang er som vist nedenfor:

1) "Jonathan Archer"
2) "Carol Freeman"
3) "Kathryn Janeway"
4) "Christopher Pike"
5) "Jean-Luc Picard"

I tilfellene der det sorterte settet inneholder medlemmer med en lignende scoreverdi, vil medlemmene bli sortert i leksikografisk rekkefølge.

Hvis du vil få medlemmene i settet og tilhørende score, kan du bruke alternativet Withscores.

127.0.0.1: 6379> Zrange Captain 0 10 Withscores

Eksempelutgangen fra kommandoen over er som vist.

1) "Jonathan Archer"
2) "1"
3) "Carol Freeman"
4) "2"
5) "Kathryn Janeway"
6) "3"
7) "Christopher Pike"
8) "4"
9) "Jean-Luc Picard"
10) "5"

Anta at du vil få medlemmene i omvendt rekkefølge. Husk at Zrange -kommandoen bare returnerer medlemmene i stigende rekkefølge. For å få omvendt ordre, bruk Zrevrange -kommandoen.

127.0.0.1: 6379> Zrevrange kapteiner 0 10

Kommandoen vil resultere i omvendt ordre.

1) "Jean-Luc Picard"
2) "Christopher Pike"
3) "Kathryn Janeway"
4) "Carol Freeman"
5) "Jonathan Archer"

Du kan også inkludere alternativet WithOptions i Zrevrange -kommandoen.

1) "Jean-Luc Picard"
2) "5"
3) "Christopher Pike"
4) "4"
5) "Kathryn Janeway"
6) "3"
7) "Carol Freeman"
8) "2"
9) "Jonathan Archer"
10) "1"

Den resulterende verdien vil inneholde score i omvendt rekkefølge.

Fjern medlemmer fra et sortert sett

For å fjerne medlemmer fra et sortert sett, bruk ZREM -kommandoen.

127.0.0.1: 6379> Zrem -kapteiner "Jonathan Archer"

Kommandoen vil returnere en heltallverdi som viser antall elementer fjernet fra det sorterte settet.

For å fjerne elementer etter rekkevidde, bruk Zrembyrange -kommandoen.

127.0.0.1: 6379> Zremrangebylex -kapteiner [A [Z

Kommandoen vil fjerne verdiene basert på deres Lexico -serie.

For å fjerne medlemmene på poengsummen, bruk ZremrangeByscore -kommandoen.

127.0.0.1: 6379> ZremRangeByscore Captain 0 5

Få info om sorterte sett

Bruk ZCard -kommandoen for å hente antall medlemmer i et gitt sortert sett.

127.0.0.1: 6379> Zcard -kapteiner

Returverdien er et heltall som viser antall elementer i et sett.

Hvis du vil få antall medlemmer innen et bestemt område, bruk Zcount -kommandoen.

127.0.0.1: 6379> Zcount Captain 0 10

Tilsvarende returnerer kommandoen en heltallverdi.

For å få poengsummen til et spesifikt medlem i et sortert sett, bruk Zscore -kommandoen:

127.0.0.1: 6379> Zscore -kapteiner "Carol Freeman"
"2"

Kommandoen vil returnere poengsummen til medlemmet hvis det eksisterer.

Konklusjon

Denne artikkelen diskuterte hvordan du kommer i gang og bruker sorterte sett i Ruby. Husk at det er flere til sorterte sett enn diskutert i denne guiden. Vurder dokumentasjonen for å lære mer.