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:
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:
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:
Memcached non è lasciato indietro e fornisce ai clienti importanti linguaggi di programmazione. Tuttavia, è breve nell'elenco dei clienti rispetto a Redis.
Loro includono:
Supporto cloud
I seguenti fornitori di cloud supportano Redis:
I seguenti fornitori supportano anche Memcached:
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!!!