2010-10-19 15 views
49

Yo he estado mirando Redis. Se ve muy interesante. Pero desde una perspectiva práctica, ¿en qué casos sería mejor usar Redis sobre MySQL?Cuándo utilizar Redis en lugar de MySQL para aplicaciones PHP?

+0

¿Has leído eso: http://www.mysqlperformanceblog.com/2009/08/27/looking-at-redis/? No entiendo todo (soy francés) pero parece interesante. – MatTheCat

+0

Gracias. Sí, eso es interesante. Aunque todavía no estoy seguro acerca de las aplicaciones prácticas. –

+0

Específico relacionado pero no específico de MySQL: http://stackoverflow.com/questions/7888880/what-is-redis-and-what-do-i-use-it-for?rq=1 –

Respuesta

67

Ignorando todo el debate NoSQL vs SQL, creo que el mejor enfoque es combinarlos. En otras palabras, utilizar MySQL para algunas partes del sistema (búsquedas complejas, transacciones) y Redis para otros (rendimiento, contadores, etc.).

En mi experiencia, los problemas de rendimiento relacionados con la escalabilidad (muchos usuarios ...) finalmente obligan a agregar algún tipo de caché para eliminar la carga del servidor MySQL y predis/memcache, etc. es muy bueno en eso.

15

No soy experto en Redis, pero por lo que he reunido, ambos son bastante diferentes. Redis:

  • no es una base de datos relacional (sin organización de datos de fantasía)
  • tiendas todo en la memoria (más rápido, menos espacio, probablemente menos segura en caso de un accidente)
  • es menos ampliamente desplegados en varios webhosts (si no te estás alojando)

Creo que es posible que desees utilizar Redis para cuando tienes una pequeña cantidad de datos que no necesita la estructura relacional que MySQL ofrece, y requiere una rápida acceso. Esto podría ser, por ejemplo, datos de sesión en una interfaz web dinámica a la que se debe acceder con frecuencia y rapidez.

Redis también se podría utilizar como memoria caché para algunos datos de MySQL a los que se accederá con mucha frecuencia (es decir, cárguelos cuando un usuario inicie sesión).

Creo que estás haciendo la pregunta al revés, usted debe preguntarse cuál es el más adecuado para una aplicación, en lugar de la aplicación que se adapta a un sistema;)

+1

Gracias - quizás estoy haciendo la pregunta al revés, pero si no entiendo cuándo es más apropiado usar Redis que MySQL, ¡no puedo responder ninguna de las preguntas! –

12

MySQL es una de datos relacional almacenar. Si está configurado (por ejemplo, usando innodb tablas), MySQL es un confiable data-store que ofrece ACID transacciones.

Redis es una base de datos NoSQL. Es más rápido (si se usa correctamente ), ya que comercia velocidad con fiabilidad (es raro para funcionar con fsync como esto perjudica drásticamente el rendimiento) y las transacciones (que se puede aproximar - lentamente - con SETNX).

Redis has some very neat features como conjuntos, listas y listas ordenadas.

These slides on Redis enumeran la recopilación de estadísticas y la gestión de sesiones como ejemplos. También hay un clon de Twitter escrito con Redis como un ejemplo, pero eso no quiere decir Redis usar Twitter (twitter use MySQL con el almacenamiento en caché Memcache pesada).

4

MySQL - datos

1) estructurado 2) El ácido 3) las operaciones pesadas y operaciones de búsqueda.

Redis -

1) Los datos no estructurados 2) operaciones de búsqueda simple y rápida. por ejemplo, símbolo de una sesión 3) utilícelo para la capa de almacenamiento en caché.

Cuestiones relacionadas