Memcached vs. Redis sammenlignet

Memcached vs. Redis sammenlignet
Det er to konkurrerende alternativer for databaser på nøkkelverdi-par-par; Redis og Memcached. De er begge gratis, åpen kildekode-databaser som gir lav latens for tilgang til data.

Til tross for disse likhetene, kan det være en ganske utfordring å velge hvilken du skal bruke til applikasjonene dine.

I denne artikkelen vil vi bryte ned de essensielle aspektene ved en database i minnet og sammenligne dem.

Definisjon

La oss starte med det grunnleggende og diskutere hva som er Redis og hva som er memcached?

Hva er Redis?

Ekstern ordbokserver eller redis for kort er definert som en gratis, open source in-memory-database som brukes som hurtigbuffer eller meldingsmegler. Det ble utviklet i 2009 av Salvatore Sanfilippo og nå Powers Popular Systems slike S Twitter, StackOverflow, GitHub, etc.

Hva er memcached?

Memcached er definert som en gratis, åpen kildekode og høy ytelse i minnedatabasen. Det brukes til å gi en hurtigbufringsmekanisme for applikasjoner, men fungerer generisk.

Det ble utviklet i 2004 av Brad Fitzpatrick og brukes nå av populære applikasjoner som Twitter, Facebook, YouTube, Instagram, Udemy, Slack, etc.

Språk og plattformstøtte

Redis er skrevet i ANSI C og fungerer i alle POSIX -systemer. Redis støttes i Linux, BSD og OSX Systems. Windows -støtte er ennå ikke tilgjengelig fra å skrive denne opplæringen.

Memcached er skrevet i ANSI C, men tverrplattform. Selv om det ikke er noen offisiell utgivelse av Memcached for Windows, kan du finne Cygwin -implementeringer av databasen eller kompilere den for plattformen din.

Datalagring

Redis har flere datastrukturer, som er veldig egnet for mange behov. Den støtter datatyper som:

  1. Strenger
  2. Lister
  3. Settene
  4. Hasj
  5. Sorterte sett
  6. Bitmaps
  7. Hyperlogger
  8. Geospatiale indekser
  9. Bekker

Redis lar deg også utføre automatiske operasjoner som å legge til strenger, beregne sett forening, forskjell, kryss, etc., Legg til et element til en liste osv.

Memcached, derimot, støtter vanlige binære strenger. Dette gjør det enkelt å bruke og bruker mindre minneoverhead enn Redis.

Arkitektur

Både Redis og Memcached følger en klient-serverarkitektur. Imidlertid er Redis entrådet mens memcached er flertrådet.

Datapartisjonering

Både Redis og Memcached støtter distribusjonen av data på tvers av forskjellige noder.

Ventetid

Siden både Redis og Memcached er databaser i minnet, gir de underkondens latens.

Cache Clearing

Redis og Memcached lar deg tømme cache ved hjelp av Flushall eller Flushdb og Flush_all -kommandoer.

Skalerbarhet

Både Redis og Memcached lar deg skalere etter hvert som dataene dine vokser. Imidlertid skalerer Redis godt horisontalt mens memcached drar nytte av vertikal skalerbarhet

Utkastelsespolitikk

Redis støtter en samling av utkastelsespolitikk som kan tilpasses i henhold til dine behov.

Sjekk vår opplæring om Redis Eviction Policies for å lære mer.

På den annen side er Memcached begrenset til LRU -utkastelsespolitikken.

Brukervennlighet/dokumentasjon

Redis er veldig godt dokumentasjon og har et stort samfunn bak seg. Dette gjør det veldig enkelt å lære og bruke.

Selv om memcached er generell og relativt dokumentert, kan det hende du må grave deg inn i kildekoden for å implementere tilpassede funksjoner.

Database ledelse

Redis gir deg et innebygd CLI-verktøy for å få tilgang til og administrere databasene og Redis-serveren.

Memcached bruker telnet for å koble til og administrere serveren din.

Kommunikasjonsprotokoll

Redis bruker TCP-tilkoblingsprotokoll eller UNIX-lignende stikkontakter uten støtte for UDP.

Memcached støtter både TCP- og UDP -protokoller.

Replikering

Redis tilbyr en enkel implementering av master-slave replikasjon. Det er uanstrengt å bruke og konfigurere. Replikasjonen vil skape eksakte kopier av masterforekomsten uavhengig av hva som skjer med mesteren.

Memcached støtter ikke replikasjon ikke. Du kan imidlertid implementere datareplikasjon ved hjelp av oppdateringsverktøy som http: // repcached.lab.Klab.org/

Persistens/øyeblikksbilder

Redis støtter NATYRE SNAPSHOTTING ved å lagre et øyeblikksbilde av datasettene dine til en disk i binærfil. Imidlertid kan du tilpasse snapshotting -funksjonene i Redis.Conf -fil.

For utholdenhet støtter Redis:

  1. RDB utholdenhet
  2. AOF utholdenhet.

Sjekk opplæringen vår om Redis Persistens for å utforske videre.

Memcached støtter ikke diskdump ikke. Du kan imidlertid bruke verktøy som memcached-dd for å implementere.

Det er ingen data vedvarende for memcached.

Skripting av serversiden

Redis støtter skripting på serversiden ved hjelp av en innebygd LUA-tolk. Den bruker eval- og evalsha -funksjoner for å evaluere LUA -skript.

Husk at LUA -skript i Redis er synkrone. Derfor blokkeres andre operasjoner når skriptene utfører.

Memcached støtter ikke skripting av serversiden.

Pub/sub

Redis støtter NATELT.

Memcached har ingen støtte for pub-sub-meldingsmodellen.

Bekker

Redis støtter strømmer med tillegg av Redis Stream -typer i Redis versjon 5.0

Memcached støtter ikke noe nytt strømmer. Du kan imidlertid bruke verktøy som Kafcache for å implementere strømmer.

https: // github.com/jpzk/kafcache

Geospatial støtte

Redis kommer med innfødt støtte for geospatiale data i sanntid. Memcached har imidlertid ikke en datastruktur for å støtte geospatiale data.

Transaksjonsstyring

Selv om Memcached bruker atomoperasjoner, støtter den ikke transaksjoner.

Som standard støtter Redis transaksjoner for å utføre kommandoer.

Klienter/programmeringsspråk

Redis støtter nesten alle de viktigste programmeringsspråk. Støttede klientlister er som vist nedenfor:

  • ActionScript
  • Activex/com+
  • Bash
  • Boomi
  • C
  • C#
  • C++
  • Clojure
  • Vanlig Lisp
  • Krystall
  • D
  • Dart
  • Delphi
  • Elixir
  • Emacs Lisp
  • Erlang
  • Fancy
  • gawk
  • GNU Prolog
  • Haskell
  • Haxe
  • Io
  • Java
  • Julia
  • Kotlin
  • Lasso
  • Lua
  • Matlab
  • Mruby
  • Nim
  • Node.JS
  • Mål-C
  • Ocaml
  • Pascal
  • Perl
  • PHP
  • PL/SQL
  • Prolog
  • Rene data
  • Python
  • R
  • Rekkert
  • Rebol
  • Rubin
  • Rust
  • Scala
  • Ordning
  • Småprat
  • Fort
  • Tcl
  • Vb
  • Vcl
  • Xojo

Memcached er ikke etterlatt og gir klienter store programmeringsspråk. Imidlertid kommer det til kort på listen over klienter sammenlignet med Redis.

De inkluderer:

  • .NETT
    • Enyim
    • Beit
  • C
    • libmemcached
  • C++
    • Libmemcached
    • McAche-klient
  • Kald fusjon
    • CFSpyMemCached
  • Erlang
    • Anker
  • Elixir
    • Memcache
  • Java
    • Spymemcached
    • Xmemcached
    • Gwhalin Memcached Client
  • Lisp
    • Cl-memcached
  • Lua
    • Lua-Resty-memcached
  • Ocaml
    • Ocaml-memcached
  • Perl
    • Perl-cache-memcached
  • PHP
    • Memcached-php
    • Memcached
    • Php-memcached
  • Python
    • Pymemcache
    • Python-memcached

Skystøtte

Følgende skyleverandører støtter Redis:

  1. Google Cloud som MemoryStore
  2. Amazon AWS som Redis
  3. Microsoft Azure som Azure Cache
  4. Alibaba Cloud som Asparadb
  5. Oracle
  6. IBM Cloud

Følgende leverandører støtter også memcached:

  1. Google Cloud som MemoryStore
  2. Amazon AWS som Amazon Elasticache
  3. Microsoft Azure
  4. Alibaba Cloud som Asparadb
  5. IBM Cloud som memcached av Bitnami

Siste tanker.

Denne opplæringen gir en omfattende oversikt over likhetene og forskjellene i Redis og Memcached -databaser. Husk at denne opplæringen fungerer som en informasjonsreferanse. Bruk den til å ta et valg basert på dine krav.

Glad koding og ser deg i den neste!!!