Aunque Memchached y Redis tienen mucho en común, también existen algunas diferencias entre ellos. A continuación, te presentamos las más importantes:
Arquitectura: Memcached funciona según el principio del multihilo y puede utilizar varios núcleos de proceso a la vez. En cambio, Redis utiliza un solo núcleo, lo que significa que el motor rinde mejor con pequeñas cantidades de datos. Cuando se trata de almacenar grandes cantidades de datos, Memcached le lleva ventaja.
Tipos de datos:Memcached solo puede gestionar cadenas de caracteres simples o strings de hasta 1 MB. Redis, por su parte, admite cadenas de hasta 512 MB, así como estructuras de datos más complejas, como listas, hashes, flujos, conjuntos, conjuntos ordenados, mapas de bits e HyperLogLogs. Redis también puede medir y guardar datos geográficos.
Persistencia de datos: Redis no es un sistema de almacenamiento en memoria puro como Memcached. Cuando el servidor de Memcached se queda sin espacio para nuevos elementos, los datos menos solicitados se eliminan automáticamente. También se pierden si falla una instancia de Memcached. En Redis, los datos pueden restaurarse gracias a la función Snapshot o el modo AOF (append only file). Sin embargo, este último puede conllevar una leve bajada de rendimiento y consiguiente ralentización.
Gestión de clústeres: con Redis, los datos no solo se distribuyen en el lado del cliente, como con Memcached, sino también en el lado del servidor. Los nodos del clúster de Redis pueden intercambiar datos entre sí. Si un subconjunto de nodos falla, esto tiene poco o ningún efecto en los tiempos de respuesta. En Memcached, sin embargo, tal intercambio de datos no es posible.
Transacciones: ambos sistemas de almacenamiento en memoria utilizan comandos atómicos, lo que significa que los valores introducidos se muestran inmediatamente en el lado del cliente conectado. Sin embargo, a diferencia de Memcached, Redis también puede ejecutar comandos de grupo en forma de procesos atómicos aislados. Esta función de Redis se denomina pipelining (canalización) y garantiza que Redis pueda responder a varios comandos al mismo tiempo.
Pub/Sub: Redis es compatible con la arquitectura Pub/Sub, un servicio de mensajería que permite que las aplicaciones se comuniquen entre sí de manera eficiente. Esta función se utiliza en salas de chat de alto rendimiento, comunicación de streaming en vivo, feeds de redes sociales y comunicación entre diferentes servidores.
Secuencias de comandos Lua: si Redis debe realizar cálculos complejos, los desarrolladores tienen la posibilidad de utilizar secuencias de comandos Lua. En este script ligero se puede incorporar una nueva lógica sin mucho esfuerzo, lo que aumenta el rendimiento y facilita el uso.