Hvilken hurtigbufferløsning å velge og hvorfor

Bufferløsninger hjelper deg med å øke hastigheten på applikasjonsytelsen. Når du søker etter de beste hurtigbufferløsningene, Redis og Membufret komme ut som to av de mest populære valgene.

Men hvordan bestemmer du hvilken du skal velge når du sammenligner Redis vs. Memcached? Denne veiledningen vil hjelpe deg å forstå hva de begge har å tilby og lede deg til en informert beslutning.

Enten du ønsker å øke applikasjonshastigheten, redusere databasebelastningen eller sømløst skalere systemet, er det viktig å forstå caching-løsninger.

Mens Redis og Memcached kan brukes som applikasjonsbufringsløsninger, har de sine egne funksjoner. På den ene siden tilbyr begge deg forsinkelser på under millisekunder og høy gjennomstrømning; på den annen side er de forskjellige når det gjelder funksjoner som støtte for datastrukturer og lagring.

Men før vi dykker inn i Redis vs. Memcached, la oss se på caching.

Hva er caching, og hvorfor trenger du det?

Når du utfører en operasjon i applikasjonen din, bruker den opp systemressursene dine. Det kan være din behandling når du kjører en CPU-intensiv oppgave. Eller det kan være en nettverksintensiv oppgave som å lese fra en fil eller en database.

Systemytelsen din påvirkes når du utfører den samme CPU- eller nettverksintensive oppgaven gjentatte ganger. Tenk på scenariet der du leter opp noen data fra databasen, og spørringen er kompleks. Ikke bare vil det ta tid å beregne og hente dataene fra databasen, men å ha et komplekst søk bruker mer av databaseressursene dine.

Tenk deg nå om det ikke er noen endring i søkeresultatet mellom to påfølgende forespørsler. Imidlertid ender du fortsatt opp med å kjøre det samme dyre søket hver gang du trenger dataene. Hva om det finnes et alternativ? Det er her caching kommer inn i bildet.

I kjernen innebærer caching lagring av ofte tilgang til data i høyhastighetsminne. Dette lar deg raskt hente det når dataene blir bedt om igjen. I tillegg eliminerer du behovet for å gjenta ressurskrevende operasjoner – for eksempel databasespørringer eller komplekse beregninger. Dermed forbedrer du systemytelsen, effektiviteten og reaksjonsevnen.

Her er fordelene du får fra caching:

  • Dine ventetider er redusert
  • Nettstedene og applikasjonene dine lastes inn og reagerer raskere
  • Unødvendig ressursutnyttelse reduseres
  • Du ender opp med mindre belastning på backend-servere
  • Databasen din er beskyttet mot ofte kjørende tunge søk

Redis: En oversikt

Redis er et datalager med åpen kildekode som fungerer i minnet. Du lagrer data i nøkkelverdi-par. I tillegg til å bruke det som en hurtigbufferløsning, kan du bruke Redis som en database, meldingsmegler eller kø.

Fordi Redis kjører i minnet, får du spørringsforsinkelser på under millisekunder. Å hente data fra minnet er mye raskere enn fra disken. Dermed får du svært høy gjennomstrømning og kan utføre mye lesing og skriving per sekund.

  Datakvalitet: En omfattende veiledning

Når du sammenligner Redis vs. Memcached, støtter Redis et bredt spekter av datastrukturer. Du kan lagre hvilken som helst tekst eller binære data i form av strenger (maks. 512 MB størrelse). Hvis du trenger å lagre objekter, kan du bruke felt-verdi-parene kalt Hashes. Hvis du må lagre en samling av strenger, kan du bruke lister, sett eller sorterte sett.

Du får klientbibliotekstøtte for store programmeringsspråk – Java, Python, Go, NodeJs, C# (C-Sharp) og .Net (Dot Net). I tillegg, når du installerer Redis, får du et innebygd kommandolinjeverktøy kalt redis-cli. Dette CLI-verktøyet lar deg raskt sjekke om Redis-serveren din fungerer som den skal. Du kan også sende kommandoer for å lese, skrive eller endre data.

Fordeler med Redis

  • Redis er åpen kildekode og tilgjengelig gratis
  • Det er offisielle kunder for store programmeringsspråk
  • Du kan bruke den som en hurtigbufferløsning, meldingsmegler, database eller kø
  • Den tilbyr svært høy ytelse med forsinkelser på under millisekunder
  • Du får flere innebygde datastrukturer som strenger, lister, sett og sorterte sett
  • Med primær-replika-arkitektur får du høy tilgjengelighet og skalerbarhet

Deretter vil vi diskutere Memcached i detalj.

Memcached: En oversikt

Membufret er et gratis og åpen kildekode distribuert minneobjektbufringssystem. Det gir svært høy ytelse. Du får et nøkkelverdilager i minnet for små biter av vilkårlige data. Men før vi sammenligner Redis vs. Memcached, la oss se hva Memcached gjør.

Minnet i datasystemet ditt er ikke jevnt fordelt. Ledig minne er tilstede i vilkårlige biter og forskjellige størrelser. Memcached lar deg få tilgang til tilgjengelig minne fra forskjellige deler av systemet. Dermed tar du minnet der det er overflødig og bruker det der det trengs.

Siden de er et enkelt nøkkelverdilager, forstår ikke Memcached-servere hva dataene representerer. Du lagrer rå forhåndsserialiserte data sammen med en nøkkel, en utløpstid og valgfrie flagg. Dessuten får du heller ingen støtte for innebygde datastrukturer.

I forhold til Redis snakker ikke Memcached-servere med hverandre. Du får ikke synkronisering, replikering eller kringkasting. Dermed blir cache-tilgjengelighet og ugyldiggjøring forenklet. Som klient sletter eller overskriver du data direkte på serveren som eier den.

På grunn av denne ekstremt enkle arkitekturen gir Memcached deg svært høy ytelse. På en rask maskin med høyhastighetsnettverk kan du enkelt få Memcached til å håndtere 200 000+ forespørsler per sekund.

Fordeler med Memcached

  • Fordi den bruker data i minnet, er gjenfinningen raskere sammenlignet med tradisjonelle disker
  • Det er tilgjengelige API-er for de mest populære programmeringsspråkene
  • Memcached reduserer behovet for gjentatt dataoppslag ved å bufre resultater
  • Du kan hurtigbufre databaseresultater, API-svar eller til og med gjengitte nettsider
  • Det hjelper deg å gjenvinne fragmentert minne
  • Den bruker minst nylig brukte caching, og elementer utløper etter en spesifisert tid
  • Du kan bygge dine egne abstraksjoner som Memcached

Deretter vil vi utforske forskjellen mellom Redis og Memcached.

Redis vs. Memcached: sammenligningstabell

Funksjoner RedisMemcachedData StructuresHar støtte for innebygde datastrukturer som strenger, lister, sett, sorterte sett Ingen støtte for innebygde datastrukturer. Rå forhåndsserialiserte data lagresData SizeKan lagre verdier opptil 512 MB i størrelseKan lagre verdier opptil 1 MB i størrelseDisk Storage Support Støtter naturlig disklagring ved å bruke Redis Database File (RDB) eller Append-Only Files (AOF) Det er ingen egen støtte for skriving til disk. Tredjepartsverktøy som libmemcached-verktøy er tilgjengeligThreadingIt’s single-threadedIt’s multi-threadedReplicationHar en primær replika-arkitektur som lar den ha replikeringStøtter ikke replikeringCache EvictionUses Minst nylig brukte policy for cache-utkasting. Andre policyer kan konfigureres Bruker Minst Nylig brukte policy for cache-utkasting Programmeringsspråk Støtter store programmeringsspråk Støtter store programmeringsspråk

  En grunnleggende veiledning for nybegynnere

La oss nå se på noen av brukstilfellene som er løst av Redis og Memcached.

Brukstilfeller for Redis og Memcached

#1. Tjener e-handel i stor skala: Shopify

Hvis du noen gang har sett etter å selge produkter på nettet, er sjansen stor for at du har kommet over Shopify. Det er en flerkanals e-handelsplattform som lar deg enkelt lage en nettbutikk for virksomheten din. På sitt topp serverer Shopify 80 000 forespørsler per sekund, og driver sine 600 000 selgere. Imidlertid er det en utfordring å håndtere slik trafikk med minimale latenstider.

For å takle dette bruker Shopify både Memcached og Redis i sin teknologistabel. I kjernen har Shopify en ganske enkel arkitektur som bruker MySQL for databasen, Memcached som nøkkelverdilager og Redis for køen. Noen ganger trenger du ikke se på Redis vs. Memcached. I stedet kan du bruke begge i applikasjonsarkitekturen.

Når du ser på en hvilken som helst e-handelsplattform, er det mye statisk data som ikke endres så ofte. Dette inkluderer ting som varebilder, beskrivelser og butikkinformasjon. I stedet for å spørre etter alle disse dataene for hver forespørsel, gjør lagring av dem i et nøkkelverdilager systemet raskt og forbedrer ytelsen.

Å bruke en hurtigbufferløsning som Memcached for å levere statisk innhold reduserer belastningen fra backend-serverne og databasene.

#2. Distribuert applikasjonsdatabufring: Pinterest

Pinterest har vokst til å bli det største stedet hvor folk kommer for å finne inspirasjon. Du kan gå på Pinterest og se på alle pinnene og tavlene som andre har laget. Bak kulissene er det mye som skjer. Hver forespørsel som kommer inn går gjennom flere forskjellige tjenester og utfører en stor mengde beregninger. Dette innebærer også å se på pinner og anbefalinger.

For å beskytte backend-tjenestene og unngå gjentatte beregninger, bruker Pinterest et distribuert cachelag. Dette lagrer resultatene av gjentatte beregninger. Dermed når ikke forespørslene de beregningsdyre eller lagringsdyre tjenestene og databasene. Snarere absorberer cachen en betydelig andel av trafikken. Pinterests caching-lag spenner over tusenvis av maskiner og betjener mer enn 150 millioner forespørsler per sekund.

Hvis du ser på hvordan Pinterest administrerer cachinglaget sitt, vil du finne at det kjører Memcached og mcrouter som ryggraden. På grunn av sin asynkrone hendelsesdrevne natur og flertrådede prosessering, er Memcached ekstremt effektiv. Legg til det faktum at den har en veldig enkel arkitektur. Du kan bygge dine egne abstraksjoner og skalere dem horisontalt. Det er slik Pinterest håndterer trafikken sin.

#3. Håndtere datasikkerhet i stor skala: CloudSponge

Hvis du leter etter en programvare-som-en-tjeneste (SaaS) som lar brukerne dine raskt sende ut invitasjoner, kuponger eller gratulasjonskort, så er CloudSponge svaret. Det hjelper brukerne med å importere alle viktige adressebøker, slik at brukerne ikke trenger å skrive inn kontakt-e-postadressene manuelt.

  Hvordan lage og bruke Memoji og Animoji på en iPhone

På et enkelt år behandler CloudSponge nesten 2 billioner e-postadresser gjennom sine servere. Dette kommer med sin egen sikkerhetsutfordring, ettersom enhver sårbarhet i systemet kan gi hackere sjansen til å stjele dataene.

Du kan bruke Redis som mer enn bare en bufferløsning. Dette er akkurat hva CloudSponge gjør. Redis holder alle kontaktdataene i minnet. Dataene holdes akkurat lenge nok til at kundene kan hente dem. Etter det blir den slettet. Ingen av dataene lagres på disken, selv om Redis gir dette alternativet.

#4. Andre vanlige bruksområder for hurtigbufringsløsninger

Her er noen av de andre vanlige scenariene der caching-løsninger brukes:

❇️ Chatmeldingssystemer

Hvis du lager ditt eget chatmeldingssystem, er cachingløsninger en uvurderlig komponent du trenger i arkitekturen din. Du kan lagre ofte brukte data som brukerprofiler, kontaktlister og nylige meldinger. Dette bidrar igjen til å redusere belastningen på databasen og øker systemets respons.

Sanntidsfunksjoner som skriveindikatorer og tilstedeværelsesvarsler drar også nytte av caching. Hvis du bruker en distribuert cache, kan du skalere backend-serverne dine uten å måtte skalere opp cachene.

❇️ Stedstjenester

Hvis du åpner en app og ser på posisjonsbaserte tjenester som estimering av avstand, ankomsttider og anbefalinger i nærheten, er du avhengig av cacher som er innstilt på posisjonsdata. Stedsdata lagres i form av en geospatial indeks.

Med en geospatial indeks er det mulig å lagre plasseringen til ethvert objekt i datalageret ditt. Redis støtter geospatiale indekser som standard. På grunn av at den blir servert fra minnet, kan stedsinformasjon effektivt deles i sanntid.

❇️ Sanntidsanalyse

Nettspill har vokst til å bli en enorm industri. Du er kanskje kjent med co-op mobilspill eller fantasy sports-apper der spillere er avhengige av forsinkelser på under sekunder for å ta en avgjørelse eller gjøre endringer.

Ved å bruke en hurtigbuffer kan du ha sanntidsanalyse som å vedlikeholde en ledertavle. For apper som fantasysport kan du lagre spillerstatistikken og informasjonen i bufferlaget for å øke appytelsen.

Hvilken bør du velge?

Redis skiller seg ut som et allsidig alternativ med støtte for ulike datastrukturer, noe som gjør det egnet for applikasjonene dine som krever mer enn bare grunnleggende caching. Dens sub-millisekundes spørringsforsinkelser og høy gjennomstrømning, sammen med klientbibliotekstøtte for store programmeringsspråk, gjør den til en sterk konkurrent for systemer som krever både hastighet og fleksibilitet. Du får også den opprinnelige støtten for å vedvare dataene til disk hvis du trenger det.

På den annen side utmerker Memcached seg når det kommer til enkelhet og hurtigbufring. Det er et ideelt valg for deg når brukssaken din er caching av rå, forhåndsserialiserte data. Den utnytter effektivt tilgjengelig minne på tvers av forskjellige deler av systemet. Memcacheds enkle arkitektur resulterer i svært høy ytelse, spesielt på raske maskiner med høyhastighetsnettverk.

For å gjøre det riktige valget mellom Redis og Memcached, bør du vurdere faktorer som applikasjonens kompleksitet, datastrukturkrav og skalerbarhetsbehov. Redis er flott for situasjoner der du trenger forskjellige datastrukturer og mer avanserte funksjoner, mens Memcached gir deg de laveste latensene og høyest gjennomstrømming i enkle, høyytelses caching-scenarier.

Når det gjelder Redis vs. Memcached, bør avgjørelsen til syvende og sist samsvare med prosjektets spesifikke mål og begrensninger. Noen ganger kan det hende at applikasjonsdatabufring ikke er nok.

Deretter kan du sjekke hvordan du setter opp en lokal DNS-bufferserver på Linux.