Se menciona ampliamente que Redis es "Blazing Fast" y mongoDB también es rápido. Pero tengo problemas para encontrar números reales comparando los resultados de los dos. Dadas configuraciones, características y operaciones similares (y tal vez mostrando cómo cambia el factor con diferentes configuraciones y operaciones), etc., ¿Redis es 10 veces más rápido ?, ¿2 veces más rápido ?, ¿5 veces más rápido?
Solo estoy hablando de rendimiento. Entiendo que mongoDB es una herramienta diferente y tiene un conjunto de características más rico. Este no es el debate "Es mongoDB mejor que Redis". Estoy preguntando, ¿por qué margen Redis supera a mongoDB?
En este punto, incluso los puntos de referencia baratos son mejores que ningún punto de referencia.
mongodb
benchmarking
redis
Homero6
fuente
fuente
Respuestas:
Resultados aproximados del siguiente punto de referencia: 2x escritura, 3x lectura .
Aquí hay un punto de referencia simple en Python que puede adaptar a sus propósitos. Estaba mirando qué tan bien funcionaría cada uno simplemente configurando / recuperando valores:
Resultados para con mongodb 1.8.1 y redis 2.2.5 y la última versión de pymongo / redis-py:
Tome los resultados con un grano de sal, por supuesto! Si está programando en otro lenguaje, utilizando otros clientes / implementaciones diferentes, etc., sus resultados variarán enormemente. ¡Sin mencionar que su uso será completamente diferente! Su mejor opción es compararlos usted mismo, precisamente en la forma en que tiene la intención de usarlos. Como corolario, probablemente descubras la mejor manera de hacer uso de cada uno. Siempre punto de referencia para usted!
fuente
Consulte esta publicación sobre el análisis de rendimiento de inserción de Redis y MongoDB:
fuente
Punto de referencia bueno y simple
Traté de recalcular los resultados nuevamente usando las versiones actuales de redis (2.6.16) y mongo (2.4.8) y aquí está el resultado
Además, esta publicación de blog los compara a ambos, pero usando node.js. Muestra el efecto de aumentar el número de entradas en la base de datos junto con el tiempo.
fuente
Los números serán difíciles de encontrar ya que los dos no están en el mismo espacio. La respuesta general es que Redis es 10-30% más rápido cuando el conjunto de datos se ajusta a la memoria de trabajo de una sola máquina. Una vez que se excede esa cantidad de datos, Redis falla. Mongo disminuirá la velocidad en una cantidad que depende del tipo de carga. Para un tipo de carga de inserción solamente, un usuario informó recientemente una desaceleración de 6 a 7 órdenes de magnitud (10,000 a 100,000 veces) pero ese informe también admitió que hubo problemas de configuración, y que esta era una carga de trabajo muy atípica. Las cargas pesadas de lectura normal son anecdóticamente lentas en aproximadamente 10X cuando algunos de los datos deben leerse desde el disco.
Conclusión: Redis será más rápido pero no mucho.
fuente
Aquí hay un excelente artículo sobre el rendimiento de la sesión en el marco Tornado de aproximadamente 1 año de edad. Tiene una comparación entre algunas implementaciones diferentes, de las cuales se incluyen Redis y MongoDB. El gráfico en el artículo establece que Redis está detrás de MongoDB en aproximadamente un 10% en este caso de uso específico.
Redis viene con un punto de referencia incorporado que analizará el rendimiento de la máquina en la que se encuentra. Hay una tonelada de datos sin procesar en el wiki de Benchmark para Redis. Pero es posible que tengas que buscar un poco a Mongo. Como aquí , aquí y algunos números de pulido aleatorios (pero le da un punto de partida para ejecutar algunos puntos de referencia MongoDB usted mismo).
Creo que la mejor solución a este problema es realizar las pruebas usted mismo en los tipos de situaciones que espera.
fuente
En mi caso, lo que ha sido un factor determinante en la comparación de rendimiento es el MongoDb WriteConcern que se utiliza. La mayoría de los controladores de mongo hoy en día establecerán el WriteConcern predeterminado en ACKNOWLEDGED, que significa 'escrito en RAM' ( Mongo2.6.3-WriteConcern ), en ese sentido, fue muy comparable a redis para la mayoría de las operaciones de escritura.
Pero la realidad depende de las necesidades de su aplicación y la configuración del entorno de producción, es posible que desee cambiar esta preocupación a WriteConcern.JOURNALED (escrito en oplog) o WriteConcern.FSYNCED (escrito en el disco) o incluso escrito en conjuntos de réplica (copias de seguridad) Si es necesario.
Entonces puede comenzar a ver una disminución en el rendimiento. Otros factores importantes también incluyen, qué tan optimizados están sus patrones de acceso a datos,% de falta de índice (ver mongostat ) e índices en general.
fuente
Creo que los 2-3X en el punto de referencia mostrado son engañosos, ya que si usted también depende del hardware en el que lo ejecuta, según mi experiencia, cuanto más fuerte sea la máquina, mayor será la brecha (a favor de Redis) será, probablemente por el hecho de que el punto de referencia alcanza el límite de los límites de memoria bastante rápido.
En cuanto a la capacidad de memoria, esto es parcialmente cierto, ya que también hay formas de evitarlo, hay productos (comerciales) que vuelven a escribir los datos de Redis en el disco, y también soluciones de clúster (múltiples fragmentos) que superan el tamaño de la memoria limitación.
fuente