Anche se Memchached e Redis sono per molti aspetti simili, vi sono alcune differenze. L’elenco che segue ne mostra le più importanti.
Architettura: Memcached funziona sul principio del multi-thread ed è quindi in grado di utilizzare più core di processo contemporaneamente. Redis utilizza unicamente un singolo core, cosa che gli permette di offrire prestazioni migliori lavorando con quantità di dati contenute. Se si tratta di memorizzare quantità di dati molto grandi, tuttavia, Memcached è in vantaggio.
Tipi di dati: Memcached è in grado di gestire solo stringhe semplici o fino a 1 MB. Redis, dal canto suo, supporta stringhe fino a 512 MB oltre a strutture di dati di maggiore complessità come liste, hash, flussi, insiemi, insiemi ordinati, bitmap e HyperLogLogs. Inoltre, Redis è in grado di misurare e memorizzare dati geografici.
Persistenza dei dati: Redis non è un sistema in-memory puro come Memcached. Quando non c’è più spazio per nuovi elementi nel server Memcached, i dati meno richiesti vengono automaticamente rimossi. I dati vanno persi anche nel caso in cui un’istanza di Memcached non funziona correttamente. In Redis, i dati vengono recuperati utilizzando la funzione snapshot “point-in-time” o la modalità AOF (Append Only File). Tuttavia, in quest’ultima modalità, le prestazioni possono rallentare leggermente.
Gestione del cluster: Redis non opera una condivisione dei dati unicamente sul lato client, come avviene in Memcached, ma anche sul lato server. I nodi del cluster Redis possono scambiare dati tra loro. Il malfunzionamento di un sottoinsieme di nodi si ripercuote pertanto in misura nulla o appena percettibile sui tempi di risposta. Al contrario, in Memcached un simile scambio di dati non è possibile.
Transazioni: entrambi i sistemi in-memory utilizzano istruzioni atomiche, vale a dire che i valori inseriti vengono visualizzati senza ritardo sul lato client. Diversamente da Memcached, tuttavia, Redis permette anche di eseguire i comandi di gruppo sotto forma di processi atomici isolati. Questa caratteristica di Redis è chiamata pipelining e consente a Redis di fornire una risposta a più comandi contemporaneamente.
Pub/Sub: Redis supporta l’architettura pub/sub. Il modello di messaggistica permette alle applicazioni di comunicare tra loro in modo efficiente. Questa caratteristica è utilizzata nelle chat room ad alte prestazioni, nella comunicazione streaming live, nei feed dei social media e nella comunicazione tra diversi server.
Lua: Redis supporta la libreria Lua per l’esecuzione di calcoli complessi. Lo script di Redis permette di implementare con poco sforzo una logica nuova, aumentando le prestazioni e semplificando l’utilizzo.