Memcached vs. Redis comparado

Memcached vs. Redis comparado
Hay dos opciones competidoras para bases de datos de pares de valores clave en memoria; Redis y Memcached. Ambos son bases de datos gratuitas en memoria de código abierto que proporcionan baja latencia para el acceso a los datos.

A pesar de estas similitudes, puede ser un gran desafío elegir cuál usar para sus aplicaciones.

En este artículo, desglosaremos los aspectos esenciales de una base de datos en memoria y los compararemos.

Definición

Comencemos en lo básico y discutamos qué es Redis y qué es Memcached?

Que es Redis?

El servidor de diccionario remoto o Redis para abreviar se define como una base de datos gratuita en memoria de código abierto utilizada como corredor de caché o mensajes. Fue desarrollado en 2009 por Salvatore Sanfilippo y ahora impulsa sistemas populares como Twitter, Stackoverflow, Github, etc.

Que es memcached?

Memcached se define como una base de datos gratuita, de código abierto y de alto rendimiento en memoria. Se utiliza para proporcionar un mecanismo de almacenamiento en caché para las aplicaciones, pero actúa genéricamente.

Fue desarrollado en 2004 por Brad Fitzpatrick y ahora es utilizado por aplicaciones populares como Twitter, Facebook, YouTube, Instagram, Udemy, Slack, etc.

Soporte de idioma y plataforma

Redis está escrito en Ansi C y funciona en todos los sistemas POSIX. Redis es compatible con los sistemas Linux, BSD y OSX. El soporte de Windows aún no está disponible al escribir este tutorial.

Memcached está escrito en Ansi C pero multiplataforma. Aunque no hay una versión oficial de Memcached para Windows, puede encontrar implementaciones de Cygwin de la base de datos o compilarla para su plataforma.

Almacenamiento de datos

Redis tiene múltiples estructuras de datos, que son muy adecuadas para muchas necesidades. Admite tipos de datos como:

  1. Instrumentos de cuerda
  2. Liza
  3. Sets
  4. Hash
  5. Conjuntos ordenados
  6. Mapas de bits
  7. Hiperlogs
  8. Índices geoespaciales
  9. Corrientes

Redis también le permite realizar operaciones automáticas, como agregar a las cuerdas, calcular la unión establecida, la diferencia, la intersección, etc., agregar un elemento a una lista, etc.

Memcached, por otro lado, admite cuerdas binarias simples. Esto hace que sea fácil de usar y usa menos sobrecarga de memoria que Redis.

Arquitectura

Tanto Redis como Memcached siguen una arquitectura de cliente cliente. Sin embargo, Redis es un solo subproceso, mientras que Memcached es multiproceso.

División de datos

Tanto Redis como Memcached admiten la distribución de datos en varios nodos.

Latencia

Dado que tanto Redis como Memcached son bases de datos en memoria, proporcionan latencia de sub-milisegundos.

Limpieza de caché

Redis y Memcached le permiten borrar la memoria caché usando los comandos Flushall o FlushDB y FLUSH_ALL.

Escalabilidad

Tanto Redis como Memcached le permiten escalar a medida que sus datos crecen. Sin embargo, Redis escala bien horizontalmente, mientras que Memcached se beneficia bien en la escalabilidad vertical

Política de desalojo

Redis admite una colección de políticas de desalojo que se pueden personalizar de acuerdo con sus necesidades.

Consulte nuestro tutorial sobre las políticas de desalojo de redis para obtener más información.

Por otro lado, Memcached se limita a la Política de desalojo de LRU.

Facilidad de uso/documentación

Redis es una documentación muy bien y tiene una gran comunidad detrás de esto. Esto hace que sea muy fácil de aprender y usar.

Aunque Memcached es general y relativamente documentado, es posible que deba profundizar en el código fuente para implementar características personalizadas.

Gestión de base de datos

Redis le proporciona una utilidad CLI incorporada para acceder y administrar sus bases de datos y Redis Server.

Memcached usa Telnet para conectar y administrar su servidor.

Protocolo de comunicación

Redis utiliza el protocolo de conexión TCP o los enchufes similares a Unix sin soporte para UDP.

Memcached admite protocolos TCP y UDP.

Replicación

Redis ofrece una implementación simple de replicación maestra-esclavo. Es sin esfuerzo usar y configurar. La replicación creará copias exactas de la instancia maestra, independientemente de lo que le suceda al maestro.

Memcached no admite la replicación de forma nativa. Sin embargo, puede implementar la replicación de datos utilizando herramientas de parche como http: // repcached.laboratorio.klab.org/

Persistencia/instantáneas

Redis es compatible con la instantánea al guardar una instantánea de sus conjuntos de datos en un disco en el archivo binario. Sin embargo, puede personalizar las funciones de instantánea en Redis.archivo conf.

Para persistencia, Redis apoya:

  1. Persistencia de RDB
  2. AOF PERSISTENCIA.

Consulte nuestro tutorial sobre la persistencia de Redis para explorar más.

Memcached no admite el volcado de disco de forma nativa. Sin embargo, puede usar herramientas como MemCached-DD para implementar.

No hay persistencia de datos para Memcached.

Scripting del lado del servidor

Redis admite secuencias de comandos del lado del servidor utilizando un intérprete Lua integrado. Utiliza funciones Eval y Evalsha para evaluar los scripts de Lua.

Tenga en cuenta que los guiones de Lua en Redis son sincrónicos. Por lo tanto, otras operaciones se bloquean cuando los scripts están ejecutando.

Memcached no admite scripting del lado del servidor.

Pub/submarino

Redis admite de forma nativa el modelo de mensajería Publish-Susscribe.

Memcached no tiene soporte para el modelo de mensajería de pub-sub.

Corrientes

Redis admite transmisiones con la adición de los tipos de transmisión Redis en Redis versión 5.0

Memcached no admite transmisiones de forma nativa. Sin embargo, puede usar herramientas como Kafcache para implementar transmisiones.

https: // github.com/jpzk/kafcache

Apoyo geoespacial

Redis viene con apoyo nativo para datos geoespaciales en tiempo real. Sin embargo, Memcached no tiene una estructura de datos para admitir datos geoespaciales.

Gestión de transacciones

Aunque Memcached usa operaciones atómicas, no admite transacciones.

Por defecto, Redis admite las transacciones para ejecutar comandos.

Clientes/lenguajes de programación

Redis admite casi todos los principales lenguajes de programación. Las listas de clientes compatibles son las que se muestran a continuación:

  • ActionScript
  • ActiveX/com+
  • Intento
  • Boomi
  • C
  • C#
  • C++
  • Clojure
  • Lisp común
  • Cristal
  • D
  • Dardo
  • Delfi
  • Elixir
  • emacs lisp
  • Erlang
  • Elegante
  • papar moscas
  • GNU Prolog
  • Ir
  • Haskell
  • Haxe
  • IO
  • Java
  • Julia
  • Kotlín
  • Lazo
  • Lua
  • Matlab
  • Mruby
  • Nim
  • Nodo.js
  • C objetivo
  • Ocaml
  • Pascal
  • Perl
  • Php
  • PL/SQL
  • Prólogo
  • Datos puros
  • Pitón
  • Riñonal
  • Raqueta
  • Rebolla
  • Rubí
  • Óxido
  • Escala
  • Esquema
  • Charla
  • Rápido
  • TCL
  • VB
  • VCL
  • Xojo

Memcached no se queda atrás y proporciona a los clientes lenguajes de programación importantes. Sin embargo, se queda corto en la lista de clientes en comparación con Redis.

Incluyen:

  • .NETO
    • Enyim
    • Beit
  • C
    • libmemcached
  • C++
    • Libmemcached
    • McACHE-CLIENTE
  • Fusión fría
    • cfspymemcached
  • Erlang
    • Ancla
  • Elixir
    • Memcache
  • Java
    • Spymemcached
    • Xmemcached
    • Cliente de Memcached de Gwhalin
  • Ceceo
    • Cl-memcached
  • Lua
    • Lua-Resty-Memcached
  • Ocaml
    • Ocaml-memcached
  • Perl
    • Perl-cache-memcached
  • Php
    • Memcached-PHP
    • Memcached
    • Php-memcached
  • Pitón
    • Pymemcache
    • Python-Memcached

Soporte de nubes

Los siguientes proveedores de nubes admiten Redis:

  1. Google Cloud como Memorystore
  2. Amazon AWS como Redis
  3. Microsoft Azure como Azure Cache
  4. Cloud de Alibaba como asparadb
  5. Oráculo
  6. Nube de IBM

Los siguientes proveedores también apoyan a Memcached:

  1. Google Cloud como Memorystore
  2. Amazon AWS como Amazon Elasticache
  3. Microsoft Azure
  4. Cloud de Alibaba como asparadb
  5. IBM Cloud como Memcached por Bitnami

Pensamientos finales.

Este tutorial proporciona un desglose completo de las similitudes y diferencias de las bases de datos Redis y Memcached. Tenga en cuenta que este tutorial sirve como referencia de información. Úselo para elegir en función de sus requisitos.

Feliz codificación y nos vemos en el siguiente!!!