Denne guiden vil se på nøkkellengden og dens innvirkning på Redis.
Redis nøkkellengde
Redis Keys er binærsikre. Dette betyr at enhver binær sekvens kan tjene som en nøkkel. Det kan være hva som helst - en streng, innhold i en JPEG -fil og mer. En tom streng er også en gyldig nøkkel.
Imidlertid er det en grense for den maksimale nøkkelstørrelsen (512MB). Det samme gjelder verdisstørrelsen (512 MB av hvilken som helst datatype).
Riktig nøkkellengde er avhengig av konteksten. I de fleste tilfeller unngås imidlertid for lange eller korte nøkler bedre.
Ulemper med lange nøkler
Hvis du setter en veldig lang nøkkel, kommer det med ytelseskostnader. Å se opp nøkkelen i Redis -databasen kan kreve flere kostbare nøkkelsammenligninger. I minneeffektivitet er lange nøkler ganske hukommelseseffektive.
Hvis du må bruke lange nøkler, kan du vurdere å hylle dem med gode algoritmer, for eksempel SHA1, SHA256, etc. I bytte for litt mer prosesseringskraft reduseres belastningen på minnet betydelig, for ikke å snakke om ytelsesløftet.
For eksempel vil en 1024 byte nøkkel resultere i mindre ytelse og høyere hukommelsesforbruk. Hvis den hash ved hjelp av SHA256, reduseres størrelsen til 256 biter (32 byte) mens du opprettholder en unik posisjon i Redis -serveren.
Ulemper med korte nøkler
Den andre siden av spekteret bruker kortfattede nøkler. Fra forrige eksempel er forkortelse av nøkkellengde å foretrekke for ytelsesfordeler og ressurseffektivitet. Å ofre klarhet for den lette ytelsesløftet er imidlertid ikke verdt det.
La oss bryte det ned med et eksempel. Tenk på nøkkelen U5000f som en forkortet form av Bruker: 5000: følgere. Samtidig som U5000f er det bedre alternativet ytelsesmessig, det gjør et forferdelig alternativ når det er implementert i kode.
For det første er nøkkelnavnet ganske uintuitivt. Det har heller ikke en klar indikasjon på hva det er formålet. Det er det perfekte frøet for katastrofe nedover linjen. Når kodebasen blir større, blir forvirrende koder vanskeligere å opprettholde. I stedet bruker Bruker: 5000: følgere gir en god balanse mellom ytelse og bekvemmelighet.
Hva skjer hvis Redis går ut av minnet
Redis kan håndtere et stort antall nøkler. Den er designet for å håndtere opptil 2^32 nøkler! I følge Redis FAQ er programvaren stressetestet med 250 millioner nøkler. Med andre ord, det er mer sannsynlig at du går tom for systemminnet før du treffer Redis -grensen.
Det som imidlertid skjer når Redis når maksimal minnekapasitet? Redis kommer med innebygd beskyttelse, for eksempel å begrense maksimalt minnebruk ved hjelp av MaxMemory-direktivet i Redis-konfigurasjonsfilen.
$ sudo nano/etc/redis/redis.konf
Hvis Redis når minnegrensen, returnerer den en feil til nye skrivekommandoer. Imidlertid vil det fortsatt svare normalt på å lese kommandoer.
Konklusjon
I denne guiden diskuterte vi den maksimale nøkkellengden Redis aksepterer. Vi diskuterte også styringspolitikken når Redis overstiger den tildelte minnegrensen. Med denne kunnskapen kan du bestemme hvordan du implementerer Redis i applikasjonene og skriptene dine.
Apropos manus, lær mer om å innlemme Redis med Lua, Golang, Ruby, etc. Trenger å tilpasse redis -oppførsel? Lær mer om Redis -konfigurasjonsfilen.