performance - entre - ¿Es Memcached un dinosaurio en comparación con Redis?
memcached vs redis español (6)
He trabajado bastante con memcached las últimas semanas y acabo de enterarme de Redis. Cuando leí esta parte de su léame, de repente sentí una sensación cálida y acogedora en el estómago:
Redis se puede utilizar como un dispositivo protegido contra los esteroides porque es tan rápido como los memcached pero con varias características más. Al igual que Memcached, Redis también admite establecer tiempos de espera en las teclas para que esta clave se elimine automáticamente cuando pasa una cantidad de tiempo determinada.
Esto suena asombroso También encontré esta página con puntos de referencia: http://www.ruturaj.net/redis-memcached-tokyo-tyrant-mysql-comparison
Así que, honestamente, ¿es Memcache realmente ese viejo dinousaur que es una mala elección desde el punto de vista del rendimiento en comparación con este recién llegado llamado Redis?
No he escuchado mucho sobre Redis anteriormente, ¡de ahí el enfoque para mi pregunta!
Así que, honestamente, ¿es Memcache realmente ese viejo dinousaur que es una mala elección desde el punto de vista del rendimiento en comparación con este recién llegado llamado Redis?
- Comparando las características establecidas,
Redis
tieneRedis
más funcionalidad; - Al comparar la facilidad de instalación,
Redis
también es mucho más fácil. No se requieren dependencias; - Al comparar el desarrollo activo,
Redis
también es mejor; - Creo que
memcached
es un poco más rápido queRedis
. No toca el disco en absoluto; - Mi opinión es que
Redis
es mejor producto quememcached
.
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 múltiples núcleos con un único puerto ejecutable y TCP sin la ayuda del cliente. También memcached es más rápido con grandes valores del orden de 100k. Recientemente, Redis mejoró mucho con respecto a los valores grandes (rama inestable), pero aún así, los memcaches son más rápidos en este caso de uso. El punto aquí es: ni uno ni el otro probablemente serán su cuello de botella para la consulta por segundo que pueden entregar.
- Deberías preocuparte por el uso de la memoria. Para pares clave-valor simples, Memcached es más eficiente en cuanto a la memoria. Si usa hash Redis, Redis es más eficiente con la memoria. Depende del caso de uso.
- Debería preocuparse por la persistencia y la replicación, dos funciones solo disponibles en Redis. Incluso si su objetivo es construir un caché, es útil que después de una actualización o un reinicio, sus datos aún estén allí.
- Deberías preocuparte por el tipo de operaciones que necesitas. En Redis hay muchas operaciones complejas, incluso teniendo en cuenta 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 del lado del cliente (a veces se necesita una gran cantidad de E / S). Estas operaciones suelen ser tan rápidas como GET y SET. Por lo tanto, si no necesita solo OBTENER / CONFIGURAR, sino cosas más complejas, Redis puede ayudar mucho (piense en el almacenamiento en caché de la línea de tiempo).
Sin un caso de uso es difícil elegirlo ahora, pero creo que para muchas cosas, Redis tiene sentido ya que incluso cuando no quieras usarlo como DB, al ser mucho más capaz puedes resolver más problemas, no solo almacenamiento en caché, sino incluso mensajería, clasificación, etc.
Ps, por supuesto, podría ser parcial, ya que soy el desarrollador principal del proyecto Redis.
Es posible que también desee ver Membase.
http://www.northscale.com/products/membase_server.html
No lo he usado, pero parece ser similar a Redis en que es una tienda KV centrada en la memoria con persistencia. Las principales diferencias con lo que puedo ver son:
- Redis tiene una capacidad de manipulación de datos significativamente mayor (conjuntos ordenados, etc.)
- Redis tiene un proyecto pendiente de Redis Cluster para agregar escalabilidad horizontal
Redis tiene un nivel único de descarga de datos en disco (VM) basado en un algoritmo híbrido que considera tanto el LRU como el tamaño del objeto.
Membase usa el protocolo de cableado de memcached, útil como ruta de actualización para aplicaciones existentes
- Membase está configurado para escalar horizontalmente utilizando un enfoque de hashtable distribuido
- Membase puede admitir múltiples capas de descarga de datos utilizando un enfoque LRU (muy pocas veces se usa en el disco, algo rara vez pasa a SSD, las cosas más frecuentes se quedan en la memoria RAM)
- No estoy seguro de la capacidad TTL en Membase.
La elección puede depender del grado en que su aplicación pueda aprovechar la funcionalidad adicional de manipulación de datos en Redis.
Hazelcast admite el protocolo memcached de forma nativa
http://hazelcast.org/docs/latest/manual/html-single/hazelcast-documentation.html#memcache-client
y por lo tanto es una alternativa moderna a memcached. Debe probar todas las soluciones para ver qué funciona mejor para usted.
Lo que hace Memcached hace que Redis no haga es el desahucio de valores de la memoria caché utilizado menos recientemente. Con memcached, puede establecer con seguridad tantos valores como desee, y cuando desbordan memoria, se eliminarán los que no haya utilizado recientemente. Con Redis, solo puedes aproximar esto, estableciendo un tiempo de espera en todo; cuando necesite liberar memoria, observará tres claves aleatorias y eliminará la que está más cerca de expirar.
Esa es la principal diferencia, si solo lo está usando como un caché.
Memcache es una herramienta excelente y MUY confiable.
En lugar de mirar este problema desde la perspectiva de bajar al que es más rápido en el rango de <100 ms, observe el rendimiento por "clase" del software.
- ¿Utiliza solo ram local? -> el más rápido
- ¿Utiliza ram remota? -> rápido
- ¿Utiliza ram plus hardddisk -> oh hurm.
- ¿Utiliza solo disco duro -> ejecutar!