Siden Redis Hashes lar deg lagre enorme mengder feltverdipar, må iterasjon over denne typen samling også tilrettelegges. Så den markørbaserte inkrementelle iterasjonen er implementert med HSCAN-kommandoen. I denne guiden vil vi fokusere mer på HSCAN -kommandoen og dens brukssaker.
HSCAN -kommandoen
HSCAN -kommandoen brukes til å iterere over feltene og verdiene til en Redis -hasj lagret på en gitt nøkkel. Det blokkerer ikke serveren som nøkler eller smelter kommandoer. I stedet returnerer Hscan en del av elementene i hver iterasjon med en O (1) konstant tidskompleksitet. Den eneste ulempen med denne oppførselen er at HSCAN -kommandoen har en begrenset garanti for de returnerte hasjelementene på et gitt tidspunkt fordi hasj kan endres under iterasjonene. Det er ikke tilfelle med å blokkere kommandoer som Smembers, som garanterer at alle elementene vil bli returnert på et gitt tidspunkt.
Syntaks
Hscan -kommandoen stammer fra skannekommandoen. Derfor har hscan -kommandoen nesten samme syntaks som skanning bortsett fra at skannekommandoen ikke krever en nøkkel som det første argumentet fordi det itererer over nøklene som er lagret i den nåværende Redis -databasen.
HSCAN Hash_Key Cursor [Match Pattern] [Count Count_Per_Iteration]Hash_key: Nøkkelen til hashen.
Markør: Markørverdien starter på 0 og slutter på 0 hvis en full iterasjon er fullført.
KAMP: Et mønster for å matche når du henter elementer i hver iterasjon. Bare de matchede elementene vil bli returnert til klienten.
TELLE: Antall elementer som vil bli returnert i hver iterasjon.
Det returnerte resultatsettet per iterasjon inneholder et par elementer. Den første er et 64-bits usignert heltall som representerer markøren som skal sendes inn i neste samtale. Bortsett fra det vil en rekke hasjfeltverdipar bli returnert.
Bruk sak 01: Få all informasjon fra en ansatt
La oss anta at et selskap trenger å opprettholde sine ansattedetaljer i en datalager med begrenset minneforbruk. Så Redis Hash er den ideelle datastrukturen som skal brukes i dette tilfellet fordi vi kommer til å representere ansattes gjenstander i den virkelige verden med sine egenskaper.
Først vil vi lage en Redis -hasj CompanyAempDetails: 1002 med noen feltverdipar som følger. Hmset-kommandoen kan brukes til å legge til flere feltverdipar til en hasj.
HMSET CompanyAempDetails: 1002 Empid 1002 EmpName "Jack Anwar" Empsalary $ 40000 Empaddress "23/4, Redis Avenue, NYC" EmpContact +9569492022 Empage 45 Empblood O + Empvehicle Mercedez Empdesignation "La oss iterere over ansattes objekt og hente all informasjonen ved hjelp av HSCAN -kommandoen som følger. Vi må starte fra markøren 0.
Hscan CompanyAempdetails: 1002 0Produksjon
Markørverdien er 0 i det returnerte resultatsettet, noe som betyr at alle elementene er returnert av den første iterasjonen. Fordi antall elementer er lite, representerer Redis-hashes disse elementene ved bruk av en enkeltfordeling pakket koding. Derfor, inntil en maksimal pakke størrelse eller antall elementer er oppfylt, vil kommandoen returnere alle elementene i hasj. Hvis tellingsargumentet er spesifisert, vil det bli ignorert i så fall. Dette kalles en full iterasjon fordi vi på slutten av den første iterasjonen fikk alle ni elementer. Hvis vi hadde titalls feltverdipar, ville de bli representert som et hasjbord i minnet. Så det vil ta flere iterasjoner å returnere alle elementene.
Bruk sak 02: Få besøkende telling for nettsteder hvis domene på toppnivå er ".com ”
HSCAN -kommandoen kan brukes til å filtrere ut de returnerte elementene basert på en mønsterkamp. Et kampargument bør sendes.
La oss anta at et selskap trenger å spore de besøkende tellingene for sine nettsteder. Vi kan opprette et hash abccompany: besøkende og legge til elementer som følger.
Hmset ABCCompany: Besøkende "www.ABC.ME "200000" www.htrs.com "123000" www.KDKDK.com "560000" www.QPSPS.LK "120000" www.Dioso.com "90000Vi kan bruke Hgetall -kommandoen for å sjekke hvordan hasj ser ut.
Hgetall ABCCompany: BesøkendeNå har selskapet et krav om å iterere over denne hasj og hente besøkende teller for nettsteder med “.com ” Toppnivå-domene. La oss gi kampargumentet til HSCAN -kommandoen som følger.
Hscan ABCCompany: Besøkende 0 Match *.com*Dette bør ideelt sett returnere tre medlemmer av fem medlemmer, som vist i det følgende.
Konklusjon
Oppsummert er HSCAN-kommandoen brukt til å iterere over en samling av hasjfeltverdipar. Denne kommandoen er avledet fra foreldrescan -kommandoen, men med en liten endring i det første argumentet som skal sendes der Hscan tar hash -nøkkelen som det første argumentet. Som diskutert i brukssakene, kan HSCAN -kommandoen brukes på forskjellige måter ved å spesifisere match- og telleargumentene, hvor du kan hente elementer som samsvarer med et spesifikt mønster og begrense det returnerte elementantallet per iterasjon. Totalt sett kan HSCAN -kommandoen være nyttig når du henter elementer fra en samling uten å blokkere serveren eller klienten.