Redis Zinterstore

Redis Zinterstore

Sett krysset

Et sett er en samling av elementer som tall, bokstaver eller gjenstander i den virkelige verden. Hvert av disse medlemmene er distinkt eller unikt for et gitt sett. De alene kan ikke gjøre mange ting. Derfor er det krav for å gjøre forholdet mellom to eller flere sett for å generere meningsfull innsikt. Som vi alle vet, har tall grunnleggende operasjoner som tillegg, subtraksjon, multiplikasjon og inndeling. På samme måte kommer sett med fire hovedoperasjoner: Union, kryss, forskjell og komplement.

I denne guiden vil vi fokusere på Redis -kommandoen som fungerer på de sorterte settene for å beregne skjæringspunktet mellom to eller flere av dem. Derfor forklarer denne delen den faste kryssoperasjonen. Som navnet antyder, beregner den angitte kryssoperasjonen settet med vanlige elementer som tilhører en gitt liste over sett.

Det gitte Venn -diagrammet er en representasjon av to sett med et kryss. Det er tre medlemmer som besøker begge nettstedene A og B. Hvis vi tar nettstedet A- og B -besøkende som sett A og sett B, kalles de nevnte tre medlemmene det faste krysset mellom sett A og sett B.

Redis støtter den sorterte angitte datastrukturen ut av boksen med generelle operasjoner for å legge til, fjerne og spørre elementene. Videre støtter Redis mer avanserte operasjoner på sorterte sett som satte kryss. Følgende avsnitt beskriver Zinterstore -kommandoen som hjelper til med å beregne det innstilte krysset i Redis:

Redis Zinterstore Command

Zinterstore -kommandoen opererer på to eller flere sorterte sett for å beregne skjæringspunktet mellom disse. Denne kommandoen oppretter et nytt sortert sett fra skjæringspunktet mellom de spesifiserte settene.

Siden Redis -sorterte setelementer er assosiert med scoreverdier, blir hver av disse score summert per felles element og lagres i destinasjonssettet som vist i følgende illustrasjon:

Syntaks:

Følgende er den grunnleggende syntaks for Zinterstore -kommandoen:

Zinterstore destination_set number_of_sets set_key [set_key…] [vekt vekt [vekt…]] [Aggregate sum | Min | Maks]

destinasjon_set: Nøkkelen til det sorterte settet som inneholder skjæringspunktet mellom de spesifiserte sorterte settene.

number_of_sets: Antall sorterte sett som det angitte krysset beregnes mot.

set_key: Nøkkelen eller unike identifikatoren til det sorterte settet.

Vekter: Multiplikasjonsfaktoren for hvert elements poengsum i kildesettene.

Aggregat: Dette alternativet spesifiserer en måte å samle de resulterende score per element i krysset.

Som standard tar det summen av score per element blant de gitte kildesettene. Det er mulig å spesifisere minimums- eller maksimumspoeng per element på tvers av kildesettene som den tilhører.

Både vekten og samlede argumenter er valgfrie for Zinterstore -kommandoen.

Zinterstore -kommandoen returnerer en heltallverdi som er antall medlemmer i destinasjonen sortert satt på destinasjon_set.

Bruk sak - Inspiser de vanlige besøkende på flere nettsteder med de besøkende tellingene

La oss anta et scenario der vi fikk to nettsteder A og B. For å få et helhetsbilde av besøkende på nettstedet, må vi spørre brukerne som besøker både A- og B -nettsteder. Videre har vi et krav om å telle antall besøk av hvert medlem.

La oss lage to sett, SETA og SETB, som vist i følgende:

Zadd Seta 600 "John" 150 "Mary" 300 "Nick"
Zadd Setb 300 "Mary" 100 "Nick" 760 "Doe"

Vi kan bruke Zinterscore -kommandoen for å finne ut krysset mellom SETA og SETB. Ideelt sett bør “Mary” og “Nick” være skjæringspunktet mellom de to foregående settene:

Zinterstore CommonsItvisitors 2 seta setb

I dette eksemplet brukte vi CommonsItvisitors som nøkkelen til destinasjonen sortert sett. Det er obligatorisk å spesifisere antall sett som vi bruker for å beregne krysset. I dette tilfellet er det 2.

Den returnerte verdien er 2, noe som betyr at de to medlemmene skal lagres i destinasjonen sortert sett. La oss inspisere det resulterende sorterte settet CommonsItvisitors Bruke ZrangeByscore -kommandoen:

Som forventet er "Nick" og "Mary" -medlemmene i det resulterende sorterte settet med de oppsummerte poengsumverdiene. I dette eksemplet har medlemmet “Nick” henholdsvis 300 og 100 score i SETA og SETB. Derfor har skjæringspunktet mellom disse to settene oppsummert de relevante poengsumverdiene for "Nick". Det samme har skjedd med medlemmet “Mary”.

La oss bruke multiplikasjonsfaktoren 2 og 3 for henholdsvis SETA og SETB:

Zinterstore CommonsItvisitors 2 seta setb vekter 2 3

Poengsummen til "Nick" beregnes ved å multiplisere henholdsvis 300 og 100 med 2 og 3 og summere resultatene. Derfor bør sluttresultatet være 900. Den samme prosedyren blir også fulgt av Zinterstore -kommandoen for det andre medlemmet.

Som standard samles resultatene ved å summere dem, men de andre alternativene er også tilgjengelige. Vi kan bruke Min- og Max -argumentene som holder minimum eller maksimal poengsum per medlem i det resulterende sorterte settet.

Zinterstore CommonsItvisitors 2 seta setb Aggregate Max

Som forventet er den maksimale poengsumverdien for begge medlemmene 300 og den oppbevares i destinasjonen sortert sett.

Konklusjon

Oppsummert brukes Zinterstore -kommandoen til å beregne krysset for flere sorterte settene som følger med. Den er i stand til å trekke ut krysset og lagre det i et nytt sortert sett. Som tidligere nevnt, summeres score per medlem på tvers av kildesett som standard. Minimums- og maksimale argumenter kan sendes til kommandoen der score er samlet med minimum eller maksimal poengsum i kildesettene. Samtidig er det mulig å spesifisere en multiplikasjonsfaktor for score til hvert element i krysset. Totalt sett er Zinterstore -kommandoen pålitelig og fruktbar når det.