Redis Setbit

Redis Setbit
“Strengen er den mest grunnleggende Redis -datatypen, som kan holde JSON -objekter, byte -sekvenser, en rekke binære verdier og enkle tekster. Det mest innflytelsesrike faktum om Redis Strings er at de kan behandles som en vektor av biter. Derfor kan Redis -strengene brukes til å representere bitmaps. Kort sagt, en redis bitmap kan sees på som en rekke biter lagret i en Redis -streng.”

Hver bit i bitmappen er lokalisert ved hjelp av en forskyvningsverdi. Forskyvningsverdien til en gitt bit beregnes basert på x- og y -koordinatene. Følgende matematisk formel kan brukes for å beregne forskyvningen av en gitt bit.

Offset = y koordinat * max_width_of_map + x koordinat

La oss vurdere følgende bitmap og hvordan forskyvningsverdien ser ut for forskjellige biter.

Verdiene på hver bit kan settes ved hjelp av forskyvningsverdien. Redis gir Setbit -kommandoen for å sette litt verdi til 0 eller 1. I denne guiden vil vi diskutere syntaks og bruke tilfeller av Setbit -kommandoen.

Setbit -kommandoen

Setbit -kommandoen brukes til å manipulere biter som er lagret ved en gitt forskyvning i en Redis -streng. Spesifikt setter denne kommandoen en gitt bits verdi til 1 eller 0. Redis bitmap kan inneholde opptil 2^32-1 forskyvninger som begrenser maksimal størrelse på en bitmap til 512MB. Videre starter bitmap -forskyvningene fra 0th -indeksen.

Følgende er syntaks for Setbit -kommandoen.

Setbit nøkkelforskyvningsverdi

nøkkel: Navnet på Redis -nøkkelen, som lagrer en strengverdi.

offset: Forskyvningsverdien av biten.

verdi: Verdien av biten. Dette kan være 1 eller 0.

Hvis nøkkelen ikke eksisterer, vil Setbit -kommandoen opprette en ny strengverdi og angi bitverdien til en spesifisert forskyvning. Videre fungerer Setbit -kommandoen på O (1) tidskompleksitet som er en betydelig rask prosess. Dette kan variere litt når vi skal angi 2^31-1-biten i en bitmapp når den spesifiserte tasten ikke eksisterer eller lagrer en veldig liten strengverdi fordi minnet for alle mellombitene skal tildeles. Det vil ta litt tid.

Setbit -kommandoen returnerer den opprinnelige bitverdien som er lagret ved forskyvningen i strengen som er lagret på en spesifisert nøkkel.

Bruk sak - Filsystemstillatelser ved hjelp av Redis bitmap

La oss anta at et UNIX-lignende operativsystem opprettholder filtillatelser ved hjelp av bitmaps. Les, skriv og utfør tillatelser for en gitt fil/mappe lagres i et bitmapp som følger.

La oss sette de skrivebeskyttede tillatelsene til filen som heter “A.tekst". For å gjøre det klart, er lesetillatelse betegnet med biten som ligger ved 0th Offset. Så vi vil sette den 0. forskyvningen til 1 ved å ringe Setbit -kommandoen som følger.

setbit -fil: ID: 100: Navn: a.txt 0 1

La oss bekrefte om 0th Offset har blitt satt på riktig.

GetBit -fil: ID: 100: Navn: A.txt 0

Vi trenger ikke å angi de to andre forskyvningene eksplisitt siden standardbitverdien på litt er 0. Derfor bør 1. og 2. forskyvningsbiter implisitt settes til 0, som vist på det følgende.

Tilsvarende kan vi sette alle tre lese, skrive og utføre tillatelser i mappen ABC som følger. Flere biter kan settes ved å ringe Setbit -kommandoen flere ganger.

Setbit -mappe: ID: 3: Navn: ABC 0 1
Setbit -mappe: ID: 3: Navn: ABC 1 1
Setbit -mappe: ID: 3: Navn: ABC 2 1

La oss sjekke verdiene på 3 biter ved å bruke GetBit -kommandoen.

GetBit -mappe: ID: 3: Navn: ABC 0
GetBit -mappe: ID: 3: Navn: ABC 1
GetBit -mappe: ID: 3: Navn: ABC 2

Videre kan vi bruke Redis Get -kommandoen for å hente strengrepresentasjonen av en gitt bitmap. Som du kan se i følgende utgang, er sekskantverdien blitt returnert.

Lik desimalverdien ville være 224.

Totalt sett kan Setbit -kommandoen brukes effektivt for å manipulere bitmap.

Konklusjon

Oppsummert brukes Setbit -kommandoen til å fjerne eller sette bitverdien til en gitt forskyvning i en Redis -streng som er lagret på en gitt tast. Som nevnt kan en Redis -streng behandles som en rekke biter som kan representere en bitmap -datastruktur. Setbit -kommandoen fungerer også på bitmaps i O (1) tidskompleksitet. Som du har sett i brukssakene, kan flere biter settes ved å ringe Setbit -kommandoen flere ganger. Ved hjelp av Redis Get -kommandoen kan strengverdien til bitmappen hentes.