Memcached vs. Redis confrontato

Memcached vs. Redis confrontato
Esistono due opzioni concorrenti per i database delle coppie di valore chiave in memoria; Redis e Memcached. Sono entrambi database gratuiti e open source in memoria che forniscono bassa latenza per l'accesso ai dati.

Nonostante queste somiglianze, può essere una vera sfida a scegliere quale utilizzare per le tue applicazioni.

In questo articolo, abbatteremo gli aspetti essenziali di un database in memoria e li confronteremo.

Definizione

Cominciamo dalle basi e discutiamo di ciò che è Redis e cosa è Memcached?

Cos'è Redis?

Server del dizionario remoto o Redis per corto è definito come un database in memoria aperto e open source utilizzato come cache o broker di messaggi. È stato sviluppato nel 2009 da Salvatore Sanfilippo e ora alimenta sistemi popolari come Twitter, Stackoverflow, GitHub, ecc.

Ciò che è memcached?

Memcached è definito come un database in memoria gratuito, open source e ad alte prestazioni. Viene utilizzato per fornire un meccanismo di memorizzazione nella cache per le applicazioni ma agisce genericamente.

È stato sviluppato nel 2004 da Brad Fitzpatrick ed è ora utilizzato da applicazioni popolari come Twitter, Facebook, YouTube, Instagram, Udemy, Slack, ecc.

Supporto linguistico e piattaforma

Redis è scritto in Ansi C e opere in tutti i sistemi Posix. Redis è supportato nei sistemi Linux, BSD e OSX. Il supporto di Windows non è ancora disponibile al momento della stesura di questo tutorial.

Memcached è scritto in ANSI C ma multipiattaforma. Sebbene non vi sia alcun rilascio ufficiale di memcached per Windows, puoi trovare implementazioni di Cygwin del database o compilarlo per la tua piattaforma.

Archivio dati

Redis ha più strutture di dati, che sono molto adatte a molte esigenze. Supporta tipi di dati come:

  1. stringhe
  2. Elenchi
  3. Imposta
  4. Hash
  5. Set ordinati
  6. Bitmaps
  7. Hyperlogs
  8. Indici geospaziali
  9. Flussi

Redis consente inoltre di eseguire operazioni automatiche come l'avvio di stringhe, il calcolo di unione set, la differenza, l'intersezione, ecc., Aggiungere un elemento a un elenco, ecc.

Memcached, d'altra parte, supporta stringhe binarie semplici. Questo lo rende facile da usare e utilizza meno sovraccarico di memoria di Redis.

Architettura

Sia Redis che Memcached seguono un'architettura client-server. Tuttavia, Redis è a thread singolo mentre Memcached è multi-thread.

Partizionamento dei dati

Sia Redis che Memcached supportano la distribuzione dei dati su vari nodi.

Latenza

Poiché sia ​​Redis che Memcached sono database in memoria, forniscono latenza sub-millisecondi.

Cancellamento della cache

Redis e Memcached consentono di cancellare la cache usando i comandi FLOHALL o FLUSHDB e FLUSH_ALL.

Scalabilità

Sia Redis che Memcached ti consentono di ridimensionare man mano che i tuoi dati crescono. Tuttavia, Redis si ridimensiona bene in orizzontale mentre i memicati benefici bene sulla scalabilità verticale

Politica di sfratto

Redis supporta una raccolta di politiche di sfratto che possono essere personalizzate in base alle tue esigenze.

Controlla il nostro tutorial sulle politiche di sfratto di Redis per saperne di più.

D'altra parte, Memcached è limitato alla politica di sfratto LRU.

Facilità d'uso/documentazione

Redis è molto bene la documentazione e ha una grande comunità dietro di essa. Questo rende molto facile imparare e usare.

Sebbene Memcached sia generale e relativamente documentato, potrebbe essere necessario scavare nel codice sorgente per implementare le funzionalità personalizzate.

Gestione del database

Redis ti fornisce un'utilità CLI integrata per accedere e gestire i database e il server Redis.

MemCached utilizza Telnet per connettere e gestire il tuo server.

Protocollo di comunicazione

Redis utilizza il protocollo di connessione TCP o le prese simili a Unix senza supporto per UDP.

Memcached Supports Entrambi i protocolli TCP e UDP.

Replica

Redis offre una semplice implementazione di replica di maestro slave. È senza sforzo usare e configurare. La replica creerà copie esatte dell'istanza principale indipendentemente da ciò che accade al maestro.

Memcached non supporta nativamente la replica. Tuttavia, è possibile implementare la replica dei dati utilizzando strumenti di patch come http: // repached.laboratorio.Klab.org/

Persistenza/istantanee

Redis supporta in modo nativo la snapshot salvando un'istantanea dei set di dati su un disco in file binario. Tuttavia, puoi personalizzare le funzionalità di snapshot in Redis.Conf File.

Per la persistenza, Redis supporta:

  1. RDB Persistence
  2. Aof persistenza.

Controlla il nostro tutorial sulla persistenza di Redis per esplorare ulteriormente.

Memcached non supporta nativamente il dump del disco. Tuttavia, è possibile utilizzare strumenti come Memcached-DD per implementare.

Non ci sono dati di persistenza dei dati per memcached.

Scripting sul lato server

Redis supporta lo scripting lato server utilizzando un interprete LUA incorporato. Utilizza le funzioni Eval e Evasha per valutare gli script LUA.

Tieni presente che gli script di Lua a Redis sono sincroni. Quindi, altre operazioni vengono bloccate quando gli script stanno eseguendo.

Memcached non supporta lo scripting sul lato server.

Pub/sub

Redis supporta in modo nativo il modello di messaggistica di pubblicazione di pubblicazione.

Memcached non ha supporto per il modello di messaggistica pub-sub.

Flussi

Redis supporta i flussi con l'aggiunta dei tipi di flusso Redis in Redis versione 5.0

Memcached non supporta nativamente i flussi. Tuttavia, è possibile utilizzare strumenti come Kafcache per implementare i flussi.

https: // github.com/jpzk/kafcache

Supporto geospaziale

Redis viene fornito con supporto nativo per i dati geospaziali in tempo reale. Tuttavia, Memcached non ha una struttura di dati per supportare i dati geospaziali.

Gestione delle transazioni

Sebbene Memcached utilizzi operazioni atomiche, non supporta le transazioni.

Per impostazione predefinita, Redis supporta le transazioni per eseguire comandi.

Clienti/linguaggi di programmazione

Redis supporta quasi tutti i principali linguaggi di programmazione. Gli elenchi dei clienti supportati sono come mostrato di seguito:

  • ActionScript
  • ActiveX/com+
  • Bash
  • Boomi
  • C
  • C#
  • C++
  • Clojure
  • Comune lisp
  • Cristallo
  • D
  • Dardo
  • Delphi
  • Elisir
  • emacs lisp
  • Erlang
  • Fantasia
  • Gawk
  • GNU Prolog
  • Andare
  • Haskell
  • Haxe
  • Io
  • Giava
  • Julia
  • Kotlin
  • Lazo
  • Lua
  • Matlab
  • MRUBY
  • Nim
  • Nodo.js
  • Obiettivo-C
  • Ocaml
  • Pascal
  • Perl
  • PHP
  • PL/SQL
  • Prolog
  • Dati puri
  • Pitone
  • R
  • Racchetta
  • REBOL
  • Rubino
  • Ruggine
  • Scala
  • schema
  • Smalltalk
  • Swift
  • Tcl
  • VB
  • VCL
  • Xojo

Memcached non è lasciato indietro e fornisce ai clienti importanti linguaggi di programmazione. Tuttavia, è breve nell'elenco dei clienti rispetto a Redis.

Loro includono:

  • .NETTO
    • Enyim
    • Beit
  • C
    • libmemcached
  • C++
    • Libmemcached
    • McAche-Client
  • Fusione fredda
    • cfspimemcached
  • Erlang
    • Ancora
  • Elisir
    • Memcache
  • Giava
    • Spimemcached
    • Xmemcached
    • Ghawhalin Memcached Client
  • Lisp
    • Cl-Memcached
  • Lua
    • Lua-Resty-Memcached
  • Ocaml
    • Ocaml-Memcached
  • Perl
    • Perl-cache-memoriato
  • PHP
    • Memcached-php
    • Memcached
    • PHP-Memcached
  • Pitone
    • Pymemcache
    • Python-Memcached

Supporto cloud

I seguenti fornitori di cloud supportano Redis:

  1. Google Cloud come Memorystore
  2. Amazon AWS come Redis
  3. Microsoft Azure come Cache Azure
  4. Alibaba Cloud come asparadb
  5. Oracolo
  6. IBM Cloud

I seguenti fornitori supportano anche Memcached:

  1. Google Cloud come Memorystore
  2. Amazon AWS come Amazon Elasticache
  3. Microsoft Azure
  4. Alibaba Cloud come asparadb
  5. IBM Cloud come memcached da Bitnami

Pensieri finali.

Questo tutorial fornisce una rottura completa delle somiglianze e delle differenze di Redis e Memcached Database. Tieni presente che questo tutorial funge da riferimento di informazioni. Usalo per fare una scelta in base alle tue esigenze.

Felice programmazione e ci vediamo nel prossimo!!!