2012-04-25 16 views
16

He visto muchas personas usando Redis como caché últimamente, ¿por qué no Mongo? Por lo que pude ver, Redis puede establecer una fecha de caducidad en un índice, como Memcache, pero ¿hay alguna razón para no usar Mongo para esto?¿Por qué utilizar Redis en lugar de MongoDb para el almacenamiento en caché?

Pregunto mientras hago una gran unión en MySQL y luego cambio los datos después de seleccionarlo. Ya estoy usando Memcache en otras partes del sitio, pero guardar esto en Mongo me permitiría realizar búsquedas geoespaciales en los datos en caché.

Respuesta

13

Mucha gente usa MongoDB para un caché de grado bajo-medio y funciona muy bien.

Dado que ofrece más funcionalidades que un simple almacén de valores de claves mediante consultas ad-hoc, no es tan puro de una capa de almacenamiento en memoria caché como Memcache o Redis (puede ser más lento insertar y recuperar datos).

Se puede lograr un rendimiento extremadamente alto (el conjunto de trabajo está en RAM después de todo), pero el modelo de datos es más pesado.

Sin embargo, en la otra cara, MongoDB ofrece una capa de persistencia que tiene mucho más sentido (para la mayoría de los desarrolladores) para el tipo de datos que es más probable que se necesite más adelante, a diferencia de Redis.

+4

Otras características de MongoDB como [colecciones limitadas] (http://www.mongodb.org/display/DOCS/Capped+Collections) también pueden ser útiles en el almacenamiento en caché de capas. También hay una solicitud de características para [colecciones TTL configurables] (https://jira.mongodb.org/browse/SERVER-211), que será muy útil para el almacenamiento en caché de capas, aunque todavía no está implementado. – dcrosta

+5

Está implementado ahora :) – wprl

+0

Colecciones TTL configurables: https://docs.mongodb.com/manual/tutorial/expire-data/ –

3

Cuando decimos que el almacenamiento en caché, la velocidad viene a la mente. El objetivo aquí es establecer y recuperar algo lo más rápido posible. En este sentido, redis es más rápido que mongodb. Sin embargo, si encuentra que mongodb es adecuado para realizar búsquedas geoespaciales en datos almacenados en caché, está bien usarlo. Por supuesto, puede invertir algo de tiempo e implementar lo mismo en redis, y luego comparar para ver lo que gana.

10

La mayor diferencia entre MongoDB y Redis es que Redis suele almacenar toda la base de datos en la memoria. MongoDB utiliza un archivo mapeado de memoria para simular que todo está en la memoria, y permite que la página del sistema operativo entre y salga del disco según sea necesario. Si el sistema operativo puede mantener todo en la memoria, el rendimiento será algo similar.

+0

Redis guarda dos copias, una en la memoria y otra en el disco – Craneum

+0

A partir de la versión 3.2, WiredTiger es el motor de almacenamiento predeterminado para MongoDB. –

Cuestiones relacionadas