Memcached vs Redis

1. Oversikt

I denne artikkelen vil vi undersøke likhetene og forskjellene mellom to populære minnedatabaser, Memcached og Redis.

2. Memcached og Redis

Ofte tenker vi på caching for å forbedre ytelsen mens du behandler en stor mengde data.

Memcached er et distribuert minne caching system designet for brukervennlighet og enkelhet og er godt egnet som hurtigbuffer eller øktbutikk.

Redis er en datastrukturbutikk i minnet som tilbyr et rikt sett med funksjoner. Det er nyttig som hurtigbuffer, database, meldingsmegler og kø.

3. Installasjon

3.1. Installerer Memcached

Vi kan installere den nyeste Memcached-serveren ved å laste ned pakken og kjøre gjøre:

$ wget //memcached.org/latest $ tar -zxvf memcached-1.6.3.tar.gz $ cd memcached-1.6.3 $ ./configure && make && make test && sudo make install

3.2. Installere Redis

På samme måte kan vi installere den nyeste Redis-serveren:

$ wget //download.redis.io/releases/redis-5.0.8.tar.gz $ tar xzf redis-5.0.8.tar.gz $ cd redis-5.0.8 $ make

4. Likheter

4.1. Sub-Millisecond Latency

Både Memcached og Redis tilbyr responstider på under millisekunder ved å holde data i minnet.

4.2. Datadelingering

På samme måte tillater begge databaser i minnet distribusjon av data over flere noder.

4.3. Programmeringsspråkstøtte

På samme måte støtter begge alle de store programmeringsspråkene, inkludert Java, Python, JavaScript, C og Ruby.

I tillegg er det noen få Java-klienter tilgjengelig for begge databasene i minnet. For eksempel er Xmemcached og Memcached-java-client tilgjengelig for Memcached, mens Jedis, Lettuce og Redisson er tilgjengelige for Redis.

4.4. Tømming av hurtigbuffer

Memcached gjør det mulig å tømme hurtigbufferen ved hjelp av flush_all kommando. På samme måte tillater Redis oss å slette alt fra en cache ved å bruke kommandoer som FLUSHDB og FLUSHALL.

4.5. Skalering

Begge cacheløsninger tilbyr høy skalerbarhet for å håndtere store data når etterspørselen vokser eksponentielt.

5. Forskjeller

5.1. Kommandolinje

Memcached lar oss kjøre kommandoer ved å koble til serveren ved hjelp av telnet:

$ telnet 10.2.3.4 5678 Prøver 10.2.3.4 ... Koblet til 10.2.3.4. 
$ stats STAT pid 14868 STAT oppetid 175931 STAT tid 1220540125 // ...

I motsetning til Memcached kommer Redis med et dedikert kommandolinjegrensesnitt, redis-cli, slik at vi kan utføre kommandoer:

$ redis-cli KOMMANDO 1) 1) "lagre" 2) (heltall) 1 3) 1) "admin" 2) "noscript" // ... 2) 1) "multi" 2) (heltall) 1 3) 1) "noscript" 2) "rask" // ... 3) 1) "geodist" 2) (heltall) -4 3) 1) "readonly" // ... // ...

Her har vi henrettet KOMMANDO for å liste opp alle kommandoene som er gitt av Redis.

5.2. Disk I / O-dumping

Memcached håndterer diskdumping bare med tredjepartsverktøy som libmemcached-verktøy eller gafler som memcached-dd.

Imidlertid gir Redis svært konfigurerbare standardmekanismer som RDB (Redis-databasefil) eller AOF (kun tilleggsfiler) for diskdumping. Dette kan være nyttig for arkivering og gjenoppretting.

Ved hjelp av redis-cli kan vi utføre synkron LAGRE kommando for å ta et øyeblikksbilde av minnedataene:

$ redis-cli LAGRE OK

Her lagrer kommandoen øyeblikksbildet i a dump.rdb binærfil og returnerer statusen OK når fullført.

Imidlertid utførelsen av den asynkrone BGSAVE starter bakgrunnsprosessen med å ta et øyeblikksbilde:

$ redis-cli BGSAVE OK

I tillegg kan vi bruke LASTSAVE kommando for å sjekke Unix-tiden for det siste vellykkede DB-øyeblikksbildet.

$ redis-cli LASTSAVE (heltall) 1410853592

5.3. Datastrukturer

Memcached lagrer nøkkelverdipar som en streng og har en 1 MB størrelsesgrense per verdi. Derimot, Redis støtter også andre datastrukturer som liste, sett og hasj, og kan lagre verdier på opptil 512 MB i størrelse.

5.4. Replikering

Memcached støtter replikering med tredjepartsgafler som repached.

I motsetning til Memcached, gir Redis oss funksjonalitet til å multiplisere klynger ved å replikere den primære lagringen for bedre skalerbarhet og høy tilgjengelighet.

Først kan vi bruke REPLIKASJON kommando for å lage en kopi av Redis-masterserveren. Deretter utfører vi PSYNC kommandoen på replikaen for å starte replikasjonen fra mesteren.

5.5. Transaksjoner

Memcached støtter ikke transaksjoner, selv om operasjonene er atomare.

Redis gir direkte støtte for transaksjoner for å utføre kommandoer.

Vi kan starte transaksjonen ved hjelp av MULTI kommando. Deretter kan vi bruke EXEC kommando for utførelse av følgende påfølgende kommandoer. Endelig gir Redis den SE kommando for betinget gjennomføring av transaksjonen.

5.6. Publiser og abonner på meldinger

Memcached støtter ikke publisering / abonnement på meldinger utenom boksen.

Redis, derimot, gir funksjonalitet for å publisere og abonnere på meldinger ved å bruke pub / sub-meldingskøer.

Dette kan være nyttig når du designer applikasjoner som krever sanntidskommunikasjon som chatterom, sosiale medier og serverkommunikasjon.

Redis kommer med dedikerte kommandoer som PUBLISERE,ABONNERE, og AVSLUTTE ABONNEMENTET å publisere en melding til kanalen, abonnere og avslutte abonnementet på klienten til de angitte kanalene.

5.7. Geospatial Support

Geospatial support er nyttig for å implementere stedsbaserte funksjoner for applikasjonene våre. I motsetning til Memcached kommer Redis med spesielle kommandoer for å administrere geospatiale data i sanntid.

For eksempel GEODIST kommandoen beregner avstanden mellom to geospatiale oppføringer. Likeledes, den GEORADIUS kommandoen returnerer alle oppføringene innenfor angitt radius.

I tillegg kan vi bruke Spring Data Redis for å aktivere Redis geospatial støtte i et Java-program.

5.8. Arkitektur

Redis bruker en enkelt kjerne og viser bedre ytelse enn Memcached ved lagring av små datasett målt i form av kjerner.

Memcached implementerer en flertrådsarkitektur ved å bruke flere kjerner. Derfor, for lagring av større datasett, kan Memcached prestere bedre enn Redis.

En annen fordel med Memcacheds multi-threaded arkitektur er dens høye skalerbarhet, oppnådd ved å bruke flere beregningsressurser.

Redis kan skaleres horisontalt via klynging, noe som er relativt mer komplisert å sette opp og betjene. Vi kan også bruke Jedis eller Lettuce for å aktivere en Redis-klynge ved hjelp av et Java-program.

5.9. LUA skripting

I motsetning til Memcached kan vi utføre LUA-skript mot Redis. Det gir kommandoer som EVAL og SKRIFTLADDING, nyttig for utførelse av LUA-skriptene.

For eksempel kan vi utføre EVAL kommando for å evaluere skriptet:

$ redis-cli eval "returner redis.call ('sett', NØKLER [1], 'baeldung')" 1 nettsted OK

Her har vi satt nøkkelen nettsted til verdien baeldung ved å evaluere et manus.

5.10. Minnebruk

Memcached har en høyere minneutnyttelsesrate enn Redis når man sammenligner String-datastrukturen.

Til tross for det, når Redis bruker hash-strukturen, gir det en høyere minneutnyttelsesrate enn Memcached.

6. Konklusjon

I denne artikkelen utforsket vi Memcached og Redis. Først så vi på likhetene i begge databasene i minnet. Deretter så vi på forskjellene i funksjonene som tilbys av begge hurtigløsningene.

Det er mange løsninger for hurtigbufring i minnet. Derfor bør vi vurdere funksjonene til en cachemotor og matche dem mot brukssakene våre.

Vi kan absolutt konkludere med at Memcached er et solid valg for å løse enkle cachingproblemer. Generelt sett Redis overgår Memcached ved å tilby rikere funksjonalitet og forskjellige funksjoner som er lovende for komplekse brukssaker.


$config[zx-auto] not found$config[zx-overlay] not found