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?
Respuesta
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.
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;)
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! –
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).
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é.
- 1. cuándo utilizar OPTIMIZE en mysql
- 2. Cuándo utilizar propiedades en lugar de funciones
- 3. Cuándo utilizar Helpers en lugar de Partials
- 4. Cuándo utilizar Observable.FromEventPattern en lugar de Observable.FromEvent?
- 5. Mysql: cuándo utilizar los desencadenantes
- 6. ¿Por qué utilizar Redis en lugar de MongoDb para el almacenamiento en caché?
- 7. Cuándo utilizar una clave externa en MySQL
- 8. ¿Cuándo debe elegir utilizar InnoDB en MySQL?
- 9. Php mysql para aplicaciones de escritorio
- 10. Cuándo utilizar un almacén de claves/valores como Redis en su lugar/junto a una base de datos SQL?
- 11. Cuándo utilizar SQL natural join en lugar de join .. on?
- 12. ¿Cuándo debo usar print en lugar de echo en PHP?
- 13. phpMyAdmin equivalente a MySQL para Redis?
- 14. ¿Cuándo NO utilizar AJAX en el desarrollo de aplicaciones web?
- 15. ¿Cuándo se recomienda utilizar MySQL BLOB?
- 16. ¿Puede redis reemplazar completamente a mysql?
- 17. Cómo utilizar la transacción en php/mysql
- 18. Cuándo utilizar IList y cuándo utilizar List
- 19. ¿Cuándo usaría XML en lugar de SQL?
- 20. Redis vs MySQL para datos financieros?
- 21. Cuándo utilizar Dependency Injection
- 22. Cuándo utilizar Request.UrlReferrer y cuándo Request.ServerVariables ["HTTP_REFERER"]?
- 23. PHP y mySQL: ¿Cuándo usar htmlentities exactamente?
- 24. Cuándo utilizar punteros en C++
- 25. ¿Debo usar PHP/MySQL puro para desarrollar aplicaciones web?
- 26. Cuándo utilizar WCF/REST
- 27. Error PHP redis
- 28. Uso de vistas de MySQL en aplicaciones PHP
- 29. Cuándo utilizar la opción
- 30. Memcached, Redis o Couchbase
¿Has leído eso: http://www.mysqlperformanceblog.com/2009/08/27/looking-at-redis/? No entiendo todo (soy francés) pero parece interesante. – MatTheCat
Gracias. Sí, eso es interesante. Aunque todavía no estoy seguro acerca de las aplicaciones prácticas. –
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 –