¿memcached es un dinosaurio en comparación con Redis? [cerrado]


He trabajado bastante con memcached las últimas semanas y acabo de enterarme de Redis. Cuando leí esta parte de su readme, de repente tuve una sensación cálida y acogedora en mi estómago:

Redis se puede utilizar como un memcached en esteroides porque es tan rápido como memcached pero con un número de características más. Al igual que memcached, Redis también admite la configuración de tiempos de espera a las claves que esta clave será automáticamente eliminado cuando una cantidad determinada de tiempo pasar.

Esto suena increíble. También encontré esta página con puntos de referencia: http://www.ruturaj.net/redis-memcached-tokyo-tyrant-mysql-comparison

Entonces, honestamente, ¿Es memcache realmente ese viejo dinousaur que es una mala elección desde una perspectiva de rendimiento en comparación con este recién llegado llamado Redis?

No he oído mucho acerca de Redis anteriormente, por lo tanto el enfoque para mi pregunta!

Author: Industrial, 2010-05-20

6 answers

Memcache es una excelente herramienta todavía y MUY fiable.

En lugar de mirar este problema desde la perspectiva de bajar el quién es más rápido en el rango

  • ¿Utiliza solo ram local? - >más rápido
  • ¿Utiliza ram remota? -> rápido
  • Utiliza ram más disco duro -> oh hurm.
  • ¿Utiliza solo harddisk - > run!
 70
Author: Daniel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-14 14:55:14

Depende de lo que necesites, en general creo que:

  • No deberías preocuparte demasiado por las actuaciones. Redis es más rápido por núcleo con valores pequeños, pero memcached puede usar varios núcleos con un solo ejecutable y puerto TCP sin ayuda del cliente. También memcached es más rápido con valores grandes del orden de 100k. Redis recientemente mejoró mucho sobre los valores grandes (rama inestable), pero aún así memcached es más rápido en este caso de uso. El punto aquí es: ni uno ni el otro probablemente será su cuello de botella para la consulta por segundo que pueden entregar.
  • Debe preocuparse por el uso de la memoria. Para pares simples clave-valor memcached es más eficiente en memoria. Si utiliza hashes de Redis, Redis es más eficiente en memoria. Depende del caso de uso.
  • Debería preocuparse por la persistencia y la replicación, dos características que solo están disponibles en Redis. Incluso si su objetivo es construir una caché, ayuda que después de una actualización o un reinicio, sus datos sigan ahí.
  • Usted debería preocuparse por el tipo de operaciones que necesita. En Redis hay muchas operaciones complejas, incluso considerando el caso de uso del almacenamiento en caché, a menudo puede hacer mucho más en una sola operación, sin requerir que los datos se procesen en el lado del cliente (a veces se necesita una gran cantidad de E/S). Estas operaciones son a menudo tan rápido como simple OBTENER y ESTABLECER. Así que si no necesitas solo GET/SET, sino cosas más complejas, Redis puede ayudarte mucho (piensa en el almacenamiento en caché de la línea de tiempo).

Sin un caso de uso es difícil de elegir el ahora mismo, pero creo que para muchas cosas Redis tiene sentido ya que incluso cuando no quieres usarlo como base de datos, siendo mucho más capaz puedes resolver más problemas, no solo almacenamiento en caché, sino incluso mensajería, clasificación, y así sucesivamente.

P. S. Por supuesto que podría ser parcial ya que soy el desarrollador principal del proyecto Redis.

 198
Author: antirez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-16 18:48:06

Así que, honestamente-Es memcache realmente que viejo dinousaur que es una mala elección desde una perspectiva de rendimiento cuando en comparación con este recién llegado llamado ¿Redis?

  • Comparando las características establecidas entonces Redis tiene mucho más funcionalidad;
  • Comparar la facilidad de instalación Redis también es mucho más fácil. No se requieren dependencias;
  • Comparar el desarrollo activo Redis también es mejor;
  • creo memcached es un poco más rápido que Redis. No toque el disco en absoluto;
  • Mi opinión es que Redis es mejor producto que memcached.
 80
Author: Alfred,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-12 09:09:21

Lo que hace memcached que Redis no hace es el desalojo de valores de la caché que se ha usado menos recientemente. Con memcached, puede establecer de forma segura tantos valores como desee, y cuando desborden la memoria, los que no haya utilizado recientemente se eliminarán. Con Redis, solo puede aproximarse a esto, estableciendo un tiempo de espera en todo; cuando necesita liberar memoria, mirará tres teclas aleatorias y eliminará la que esté más cerca de expirar.

Esa es la principal diferencia, si eres sólo lo uso como caché.

 46
Author: Peter Scott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-20 20:05:32

Es posible que también desee mirar Membase.

Http://www.northscale.com/products/membase_server.html

No lo he usado, pero parece ser similar a Redis en que es un almacén de KV centrado en la memoria con persistencia. Las principales diferencias de lo que puedo ver son:

  • Redis tiene significativamente más capacidad de manipulación de datos (conjuntos ordenados, etc.)
  • Redis tiene un proyecto de clúster de Redis pendiente para agregar escalabilidad horizontal
  • Redis tiene un único nivel de descarga de datos en disco (VM) basado en un algoritmo híbrido que considera tanto la LRU como el tamaño del objeto.

  • Membase utiliza el protocolo memcached wire-útil como ruta de actualización para aplicaciones existentes

  • Membase se configura para escalar horizontalmente utilizando un enfoque de tabla hash distribuida
  • Membase puede soportar múltiples niveles de descarga de datos utilizando un enfoque LRU (muy rara vez se usa va al disco, algo rara vez las cosas van a SSD, frecuente las cosas se quedan en RAM)
  • No estoy seguro de la capacidad TTL en Membase.

La elección puede depender del grado en que su aplicación puede aprovechar la funcionalidad adicional de manipulación de datos en Redis.

 12
Author: HikeOnPast,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-26 22:46:02

Hazelcast soporta el protocolo memcached de forma nativa

Https://web.archive.org/web/20140601010929/http://hazelcast.org/docs/latest/manual/html-single/hazelcast-documentation.html

Y por lo tanto es una alternativa moderna a memcached. Usted debe probar todas las soluciones para ver lo que funciona mejor para usted.

 0
Author: Miko Matsumura,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-25 23:32:08