sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB con redis

Redis y MongoDB se pueden usar juntos con buenos resultados. Una empresa conocida por ejecutar MongoDB y Redis (junto con MySQL y Sphinx) es Craiglist. Vea esta presentación de Jeremy Zawodny.

MongoDB es interesante para datos persistentes, orientados a documentos e indexados de varias maneras. Redis es más interesante para datos volátiles o datos semipersistentes sensibles a la latencia.

Estos son algunos ejemplos del uso concreto de Redis sobre MongoDB.

  • Pre-2.2 MongoDB aún no tiene un mecanismo de caducidad. Las colecciones limitadas no se pueden usar realmente para implementar un TTL real. Redis tiene un mecanismo de caducidad basado en TTL, lo que facilita el almacenamiento de datos volátiles. Por ejemplo, las sesiones de usuario se almacenan comúnmente en Redis, mientras que los datos de usuario se almacenarán e indexarán en MongoDB. Tenga en cuenta que MongoDB 2.2 ha introducido un mecanismo de caducidad de baja precisión en el nivel de recopilación (para ser utilizado para purgar datos, por ejemplo).

  • Redis proporciona un tipo de datos de conjunto conveniente y sus operaciones asociadas (unión, intersección, diferencia en múltiples conjuntos, etc.). Es bastante fácil implementar un motor básico de búsqueda o etiquetado por facetas además de esta característica, que es una adición interesante a las capacidades de indexación más tradicionales de MongoDB.

  • Redis admite operaciones emergentes de bloqueo eficientes en listas. Esto se puede utilizar para implementar un sistema de colas distribuidas ad-hoc. En mi opinión, es más flexible que los cursores adaptables de MongoDB, ya que una aplicación de back-end puede escuchar varias colas con un tiempo de espera, transferir elementos a otra cola de forma atómica, etc. Si la aplicación requiere algo de cola, tiene sentido almacenar la cola en Redis y mantenga los datos funcionales persistentes en MongoDB.

  • Redis también ofrece un mecanismo pub/sub. En una aplicación distribuida, un sistema de propagación de eventos puede ser útil. Este es nuevamente un excelente caso de uso para Redis, mientras que los datos persistentes se mantienen en MongoDB.

Debido a que es mucho más fácil diseñar un modelo de datos con MongoDB que con Redis (Redis es más de bajo nivel), es interesante beneficiarse de la flexibilidad de MongoDB para los principales datos persistentes y de las características adicionales que brinda Redis (baja latencia). , caducidad de elementos, colas, pub/sub, bloques atómicos, etc...). De hecho, es una buena combinación.

Tenga en cuenta que nunca debe ejecutar un servidor Redis y MongoDB en la misma máquina. La memoria MongoDB está diseñada para intercambiarse, Redis no. Si MongoDB desencadena alguna actividad de intercambio, el rendimiento de Redis será catastrófico. Deben estar aislados en diferentes nodos.