Aktiver komprimering med Redis

Aktiver komprimering med Redis

Remote Dictionary Server, eller Redis for kort, er en lynrask database i minnet som lagrer verdier i nøkkelverdipar. Det brukes hovedsakelig som en hurtigbufringsmekanisme for databaser som SQL og dokumentdatabaser.

Siden Redis er en database i minnet, er plassen som brukes kritisk og må overvåkes sterkt. En strategi for å forbedre og optimalisere minneytelsen for Redis er å bruke komprimering.

Som standard gir Redis ikke komprimering for lagret data. Derfor implementeres komprimeringsteknikker på applikasjonen.

La oss diskutere noen få teknikker du kan bruke for å optimalisere minneytelsen i Redis.

Implementere en komprimeringsalgoritme

Siden Redis ikke komprimerer de lagrede verdiene, må du gjøre det før du lagrer dem. Det er flere kompresjonsalgoritmer for å komprimere strenger før du lagrer dem.

Slike algoritmer inkluderer:

  1. LZO -komprimering - veldig raskt og gir høyere dekompresjonshastigheter.
  2. LZ4 - effektiv i hastighet og veldig enkel å integrere seg i applikasjoner.
  3. Snappy - høy kompresjon/dekompresjonsrate.

Bruk kortere nøkkelnavn

Selv om utviklere bør favorisere mer beskrivende navn over korte, kan minnebruk raskt skyrocket hvis du har en omfattende samling av nøkler i databasen.

Vurder alltid å bruke korte nøkkelnavn for nøkkelverdidataene dine for å unngå dette.

Eksempel:

Sett denne_is_a_very_large_key_name -verdien

I stedet kan du bruke nøkkelnavnet:

Sett L_Key_Name -verdien

Dette reduserer Redis antall tegn til å lagre for databasen din.

Komprimere feltnavn

Det samme tilfellet ovenfor kan sies om feltnavnene. Og igjen, å bruke et kortere feltnavn kan spare noen få byte eller kilobyte av minnet ditt.

Vurder derfor å bruke korte feltnavn for Redis -dataene dine.

Et eksempel er som vist:

127.0.0.1: 6379> HSET User_Info ID 1 FIRSTNAME MOES LastName K Country "United States of America"

Her kan vi lagre noe minne ved å refactorere feltnavnene som:

Hset user_info id 1 fname moes lname country oss

Dette komprimerer feltnavnene og verdiene.

Bruk liste i stedet for en hasj

En hash består av feltnavn og tilsvarende verdier. Selv om dette ikke er et betydelig problem, kan det være problematisk når tusenvis av hasjtyper spiller inn.

For å løse dette kan du velge en liste som vist:

Hset user_info id 1 fname moes lname country oss

Du kan konvertere ovennevnte hasj til en liste som:

Lpush ["fname", "moes", "lname", "k", "country", "oss"]

Unngå dynamiske LUA -skript

For å spare enda mer minne, unngå å bruke dynamiske LUA -skript som får hurtigbufferen til å vokse. Jo flere skript du laster inn, jo mer bruker du mye minne.

Aktiver listekomprimering

Som nevnt komprimerer ikke Redis noen verdier som er lagret i den. Dette inkluderer elementer i en liste. For korte listeverdier er dette neppe et problem. På lange lister kan det imidlertid være en fordel å muliggjøre komprimering.

I Redis.Conf -fil, finn linjen:

sudokatt/etc/redis/redis.Conf | GREP List-Compress
Listekompress-dybde 0 // Endre denne verdien

Endre verdien av listekompress-dybde til begge:

  1. 1 - komprimerer hver listeknute bortsett fra hode og hale.
  2. 2 - Komprimerer aldri hode eller hode-> eller hale eller hale-> prev
  3. 3 - Start komprimering etter hode-> neste og hale->-Prev

Oppgrader Redis -versjonen din

Et annet skritt du kan ta for å forbedre minnebruken i Redis -serveren din er å oppgradere Redis -versjonen din.

Fra og med å skrive denne opplæringen, versjon 4.0 (siste) kommer med følgende funksjoner.

Lukking

Denne guiden diskuterer forskjellige metoder og teknikker du kan bruke for å optimalisere minnebruk i Redis -klyngen. Husk imidlertid at ikke alle former er 100% garantert.

Takk for at du leser, vi sees i den neste!!