Hvilken cacheløsning at vælge og hvorfor

Caching-løsninger hjælper dig med at fremskynde din applikations ydeevne. Når du søger efter de bedste cachingløsninger, Redis og Memcached komme ud som to af de mest populære valg.

Men hvordan beslutter du dig for, hvilken du skal vælge, når du sammenligner Redis vs. Memcached? Denne guide vil hjælpe dig med at forstå, hvad de begge har at tilbyde og føre dig til en informeret beslutning.

Uanset om du ønsker at øge din applikationshastighed, reducere databasebelastningen eller problemfrit skalere dit system, er det vigtigt at forstå cachingløsninger.

Mens Redis og Memcached kan bruges som applikationscacheløsninger, har de deres egne funktioner. På den ene side tilbyder begge dig sub-millisekunder latenser og høj gennemstrømning; på den anden side adskiller de sig med hensyn til funktioner som understøttelse af datastrukturer og lagring.

Men før vi dykker ind i Redis vs. Memcached, lad os se på caching.

Hvad er cache, og hvorfor har du brug for det?

Når du udfører en handling i dit program, bruger det dine systemressourcer. Det kan være din behandling, når du kører en CPU-intensiv opgave. Eller det kan være en netværksintensiv opgave som at læse fra en fil eller en database.

Din systemydelse påvirkes, når du udfører den samme CPU eller netværksintensive opgave gentagne gange. Overvej scenariet, hvor du slår nogle data op fra databasen, og din forespørgsel er kompleks. Ikke alene vil det tage tid at beregne og hente dataene fra databasen, men at have en kompleks forespørgsel bruger flere af dine databaseressourcer.

Forestil dig nu, om der ikke er nogen ændring i forespørgselsresultatet mellem to på hinanden følgende anmodninger. Du ender dog stadig med at køre den samme dyre forespørgsel, hver gang du har brug for dataene. Tja, hvad hvis der er et alternativ? Det er her, caching kommer i spil.

I sin kerne involverer caching lagring af hyppigt tilgåede data i højhastighedshukommelse. Dette giver dig mulighed for hurtigt at hente det, når dataene anmodes om igen. Derudover eliminerer du behovet for at gentage ressourcekrævende operationer – såsom databaseforespørgsler eller komplekse beregninger. Således forbedrer du dit systems ydeevne, effektivitet og reaktionsevne.

Her er fordelene, du får ved at cache:

  • Dine ventetider er reduceret
  • Dine websteder og applikationer indlæses og reagerer hurtigere
  • Unødvendig ressourceudnyttelse reduceres
  • Du ender med mindre belastning af backend-servere
  • Din database er beskyttet mod hyppigt kørende tunge forespørgsler

Redis: Et overblik

Redis er et open source-datalager, der fungerer i hukommelsen. Du gemmer data i nøgleværdi-par. Udover at bruge det som en caching-løsning, kan du bruge Redis som en database, meddelelsesmægler eller kø.

Fordi Redis kører in-memory, får du sub-millisekunder forespørgselsforsinkelser. Hentning af data fra hukommelsen er meget hurtigere end fra disken. Dermed får du meget høj gennemstrømning og kan udføre mange læsninger og skrivninger i sekundet.

  Cloud Cost Optimization Solutions til AWS, Azure, GCP og mere...

Når du sammenligner Redis vs. Memcached, understøtter Redis en lang række datastrukturer. Du kan gemme enhver tekst eller binære data i form af Strings (512 MB maks. størrelse). Hvis du har brug for at gemme objekter, så kan du bruge felt-værdi-parrene kaldet Hashes. Hvis du skal gemme en samling af strenge, kan du bruge lister, sæt eller sorterede sæt.

Du får klientbibliotekssupport til større programmeringssprog – Java, Python, Go, NodeJs, C# (C-Sharp) og .Net (Dot Net). Når du installerer Redis, får du desuden et indbygget kommandolinjeværktøj kaldet redis-cli. Dette CLI-værktøj lader dig hurtigt kontrollere, om din Redis-server fungerer korrekt. Du kan også sende kommandoer til at læse, skrive eller ændre data.

Fordele ved Redis

  • Redis er open source og tilgængelig gratis
  • Der er officielle kunder til større programmeringssprog
  • Du kan bruge det som en caching-løsning, meddelelsesmægler, database eller en kø
  • Det giver meget høj ydeevne med forsinkelser på under millisekunder
  • Du får flere indbyggede datastrukturer som strenge, lister, sæt og sorterede sæt
  • Med primær replika-arkitektur får du høj tilgængelighed og skalerbarhed

Dernæst vil vi diskutere Memcached i detaljer.

Memcached: En oversigt

Memcached er et gratis og open source distribueret hukommelsesobjekt-cachesystem. Det giver meget høj ydeevne. Du får et nøgleværdilager i hukommelsen til små bidder af vilkårlige data. Men før vi sammenligner Redis vs. Memcached, lad os se, hvad Memcached præcist gør.

Hukommelsen i dit computersystem er ikke jævnt fordelt. Fri hukommelse er til stede i vilkårlige bidder og forskellige størrelser. Memcached giver dig adgang til tilgængelig hukommelse fra forskellige dele af dit system. Således tager du hukommelsen fra hvor der er overskud og bruger den hvor det er nødvendigt.

Da de er et simpelt nøgleværdilager, forstår Memcached-servere ikke, hvad dataene repræsenterer. Du gemmer rå præ-serialiserede data sammen med en nøgle, en udløbstid og valgfri flag. Desuden får du heller ikke støtte til indbyggede datastrukturer.

I sammenligning med Redis taler Memcached-servere ikke med hinanden. Du får ikke synkronisering, replikering eller udsendelse. Således forenkles cachetilgængelighed og ugyldiggørelse. Som klient sletter eller overskriver du data direkte på den server, der ejer dem.

På grund af denne ekstremt enkle arkitektur giver Memcached dig meget høj ydeevne. På en hurtig maskine med højhastighedsnetværk kan du nemt få Memcached til at håndtere 200.000+ anmodninger i sekundet.

Fordele ved Memcached

  • Fordi den bruger data i hukommelsen, er hentning hurtigere sammenlignet med traditionel disk
  • Der er tilgængelige API’er til de mest populære programmeringssprog
  • Memcached reducerer behovet for gentagne dataopslag ved at cache resultater
  • Du kan cache databaseresultater, API-svar eller endda gengivede websider
  • Det hjælper dig med at genvinde fragmenteret hukommelse
  • Den bruger mindst nyligt brugte caching, og elementer udløber efter en bestemt tid
  • Du kan bygge dine egne abstraktioner som Memcached

Dernæst vil vi udforske forskellen mellem Redis og Memcached.

Redis vs. Memcached: sammenligningstabel

FunktionerRedisMemcachedData StructuresHar understøttelse af indbyggede datastrukturer som strenge, lister, sæt, sorterede sætIngen understøttelse af indbyggede datastrukturer. Rå præ-serialiserede data lagresData SizeKan gemme værdier op til 512 MB i størrelseKan gemme værdier op til 1 MB i størrelseDisk Storage Support Understøtter disklager ved hjælp af Redis Database File (RDB) eller Append-Only Files (AOF)Der er ingen indbygget understøttelse af skrivning til disk. Tredjepartsværktøjer som libmemcached-værktøjer er tilgængeligeThreadingIt’s single-threadedIt’s multi-threadedReplicationHar en primær replika-arkitektur, der gør det muligt at have replikering.Understøtter ikke replikeringCache-evictionUses Mindst nyligt anvendte politik for cache-eviction. Andre politikker kan konfigureresBruger mindst nyligt brugte politik til cache-evictionProgrammeringssprogUnderstøtter store programmeringssprogUnderstøtter store programmeringssprog

  10 bedste mek-spil til fantastiske billeder og eksplosivt gameplay

Lad os nu se på nogle af de use cases, der er løst af Redis og Memcached.

Use Cases til Redis og Memcached

#1. Servering af e-handel i stor skala: Shopify

Hvis du nogensinde har ledt efter at sælge produkter online, så er chancerne for, at du er stødt på Shopify. Det er en multi-kanal e-handelsplatform, som lader dig nemt oprette en online butik til din virksomhed. På sit højeste serverer Shopify 80.000 forespørgsler i sekundet, hvilket driver sine 600.000 forhandlere. Det er dog en udfordring at håndtere sådan trafik med minimale latenstider.

For at tackle dette bruger Shopify både Memcached og Redis i sin tech-stack. I sin kerne har Shopify en ret simpel arkitektur, der bruger MySQL til databasen, Memcached som nøgleværdilageret og Redis til køen. Nogle gange behøver du ikke se på Redis vs. Memcached. I stedet kan du bruge dem begge i din applikationsarkitektur.

Når du ser på en hvilken som helst e-handelsplatform, er der en masse statiske data, der ikke ændres så ofte. Dette inkluderer ting som varebilleder, beskrivelser og butiksoplysninger. I stedet for at forespørge på alle disse data for hver anmodning, vil lagring af dem i et nøgleværdilager gøre systemet hurtigt og forbedre dets ydeevne.

Brug af en caching-løsning som Memcached til at betjene statisk indhold reducerer belastningen fra dine backend-servere og databaser.

#2. Distribueret applikationsdatacaching: Pinterest

Pinterest er vokset til at blive det største rum, hvor folk kommer for at finde inspiration. Du kan gå på Pinterest og se på alle de pins og boards, som andre mennesker har lavet. Bag kulisserne sker der meget. Hver anmodning, der kommer ind, går gennem flere forskellige tjenester og udfører en stor mængde beregning. Dette indebærer også at se på stifter og anbefalinger.

For at beskytte backend-tjenesterne og undgå at gentage beregninger, anvender Pinterest et distribueret cachelag. Dette gemmer resultaterne af gentagne beregninger. Forespørgslerne når således ikke de beregne-dyre eller lager-dyre tjenester og databaser. Tværtimod absorberer cachen en betydelig del af trafikken. Pinterests cachinglag strækker sig over tusindvis af maskiner og betjener mere end 150 millioner anmodninger i sekundet.

Hvis du ser på, hvordan Pinterest administrerer sit cachinglag, vil du opdage, at det kører Memcached og mcrouter som dens rygrad. På grund af sin asynkrone hændelsesdrevne natur og multitrådede behandling er Memcached ekstremt effektiv. Læg dertil, at den har en meget enkel arkitektur. Du kan bygge dine egne abstraktioner og skalere dem vandret. Det er sådan Pinterest håndterer sin trafik.

#3. Håndtering af datasikkerhed i skala: CloudSponge

Hvis du leder efter en software-as-a-service (SaaS), der lader dine brugere hurtigt sende invitationer, kuponer eller lykønskningskort ud, så er CloudSponge svaret. Det hjælper sine brugere med at importere alle større adressebøger, så brugerne ikke skal manuelt indtaste kontakt-e-mailadresserne.

  Beskyt din virksomheds adgangskoder og følsomme oplysninger med 1Password

På et enkelt år behandler CloudSponge næsten 2 billioner e-mail-adresser gennem sine servere. Dette kommer med sin egen sikkerhedsudfordring, da enhver sårbarhed i systemet kan give hackere chancen for at stjæle dataene.

Du kan bruge Redis som mere end blot en caching-løsning. Det er præcis, hvad CloudSponge gør. Redis gemmer alle kontaktdata i hukommelsen. Dataene opbevares lige længe nok til, at kunderne kan hente dem. Herefter bliver den slettet. Ingen af ​​dataene bevares på disken, selvom Redis giver denne mulighed.

#4. Andre almindelige anvendelser af cacheløsninger

Her er nogle af de andre almindelige scenarier, hvor caching-løsninger bruges:

❇️ Chatbeskedsystemer

Hvis du opretter dit eget chatbeskedsystem, er cachingløsninger en uvurderlig komponent, som du har brug for i din arkitektur. Du kan gemme ofte tilgåede data som brugerprofiler, kontaktlister og seneste beskeder. Dette hjælper igen med at reducere belastningen på databasen og øger systemets reaktionsevne.

Realtidsfunktioner som indtastningsindikatorer og tilstedeværelsesmeddelelser drager også fordel af caching. Hvis du bruger en distribueret cache, kan du skalere dine backend-servere uden at skulle skalere dine cache op.

❇️ Placeringstjenester

Hvis du åbner en app og ser på placeringsbaserede tjenester som estimering af afstand, ankomsttider og nærliggende anbefalinger, er du afhængig af caches, der er indstillet til placeringsdata. Lokalitetsdata gemmes i form af et geospatialt indeks.

Med et geospatialt indeks er det muligt at gemme placeringen af ​​ethvert objekt i dit datalager. Redis understøtter som standard geospatiale indekser. På grund af den serveres fra hukommelsen, kan placeringsoplysninger effektivt deles i realtid.

❇️ Realtidsanalyse

Onlinespil er vokset til at være en massiv industri. Du er måske bekendt med co-op mobilspil eller fantasy sports apps, hvor spillere er afhængige af forsinkelser på under sekunder for at træffe en beslutning eller foretage ændringer.

Ved at bruge en cache kan du få analyser i realtid som at vedligeholde en rangliste. For apps som fantasy sport kan du gemme spillerstatistik og information i dit cachelag for at øge appens ydeevne.

Hvilken skal du vælge?

Redis skiller sig ud som en alsidig mulighed med understøttelse af forskellige datastrukturer, hvilket gør den velegnet til dine applikationer, der kræver mere end blot grundlæggende caching. Dens forespørgselsforsinkelser på under millisekunder og høje gennemløb, sammen med klientbiblioteksunderstøttelse af større programmeringssprog, gør den til en stærk konkurrent til systemer, der kræver både hastighed og fleksibilitet. Du får også den indbyggede støtte til at bevare dataene på disken, hvis du har brug for det.

På den anden side udmærker Memcached sig, når det kommer til enkelhed og højhastigheds-caching. Det er et ideelt valg for dig, når dit use case cachelagrer rå, præ-serialiserede data. Det udnytter effektivt tilgængelig hukommelse på tværs af forskellige dele af dit system. Memcacheds ligefremme arkitektur resulterer i meget høj ydeevne, især på hurtige maskiner med højhastighedsnetværk.

For at træffe det rigtige valg mellem Redis og Memcached skal du overveje faktorer som din applikations kompleksitet, datastrukturkrav og skalerbarhedsbehov. Redis er fantastisk til situationer, hvor du har brug for forskellige datastrukturer og mere avancerede funktioner, mens Memcached giver dig de laveste forsinkelser og højeste gennemløb i ligetil, højtydende caching-scenarier.

Når det kommer til Redis vs. Memcached, bør beslutningen i sidste ende stemme overens med dit projekts specifikke mål og begrænsninger. Nogle gange er cachelagring af applikationsdata muligvis ikke nok.

Tjek derefter, hvordan du opsætter en lokal DNS-cacheserver på Linux.