¿Cuándo usar un almacén de clave / valor como Redis en su lugar / junto a una base de datos SQL?

166

He leído cosas excelentes sobre las tiendas de clave / valor como Redis, pero parece que no puedo entender cuándo es el momento de usarlo en una aplicación.

Digamos que estoy diseñando una aplicación basada en web; Sé qué pila voy a usar para el front-end, el back-end, la (s) base (s) de datos, etc. ¿Cuáles son algunos de los escenarios a los que diría "oh, también necesitamos Redis para X, Y o Z".

Agradecería los ejemplos de node.js así como los ejemplos que no son de node.js.

Chris Abrams
fuente

Respuestas:

102

Parece que no puedo entender cuándo es el momento de usarlo en una aplicación.

Le recomendaría que lea este tutorial que también contiene casos de uso. Dado que redis está más bien orientado a la memoria, es realmente bueno para los datos en tiempo real que se actualizan con frecuencia, como el almacén de sesiones, la base de datos de estado, las estadísticas, el almacenamiento en caché y sus estructuras de datos avanzadas que ofrecen versatilidad para muchos otros escenarios.

Sin embargo, Redis no es un reemplazo NoSQL para las bases de datos relacionales clásicas, ya que no admite muchas características estándar del mundo RDBMS, como la consulta de sus datos, lo que podría ralentizarlo. Los reemplazos son bases de datos de documentos como MongoDB o CouchDB y redis es excelente para complementar la funcionalidad específica donde la velocidad y el soporte para estructuras de datos avanzadas son útiles.

yojimbo87
fuente
3
¡El tutorial al que te vinculaste es increíble!
Chris Abrams
55
Hice una búsqueda rápida en Google con la URL del sitio tutorial y encontré esto como un éxito: slideshare.net/dvirsky/introduction-to-redis-version-2
Paul
66

Creo que nada explica mejor los casos de uso de Redis que este artículo: http://antirez.com/post/take-advantage-of-redis-adding-it-to-your-stack.html

¡Apuesto a que tendrás un ajá! momento . ;)

Una cita de un lector anterior:

Leí sobre Redis antes y escuché cómo las compañías lo usan, pero nunca entendí completamente su propósito. Después de leer esto, puedo decir que entiendo Redis ahora y cómo es útil. Es sorprendente que después de escuchar tanto sobre todo lo que tomó fue un artículo relativamente simple.

Una cita del artículo:

Redis es diferente a otras soluciones de bases de datos en muchos aspectos: utiliza la memoria como soporte de almacenamiento principal y el disco solo para la persistencia, el modelo de datos es bastante único, tiene un solo subproceso y así sucesivamente. Creo que otra gran diferencia es que para aprovechar Redis en su entorno de producción no necesita cambiar a Redis. Puede usarlo para hacer cosas nuevas que antes no eran posibles o para solucionar problemas antiguos.

Casos de uso que toca el artículo:

  • Listado lento de los últimos artículos en su página de inicio
  • Tablas de clasificación y problemas relacionados
  • Ordenar por usuario votos y tiempo
  • El implemento caduca en los artículos
  • Contando cosas
  • N artículos únicos en un período de tiempo determinado
  • Análisis en tiempo real de lo que está sucediendo, estadísticas, antispam o lo que sea.
  • Pub / Sub
  • Colas
  • Almacenamiento en caché
zenw0lf
fuente
Este artículo es muy útil, tengo lo que quería saber
Hos Mercury
@ Zenw0lf ¿Redis sigue siendo el mejor para el almacenamiento en caché simple? Tu publicación es de 2011, así que no estoy seguro de si hay algo más que deba usar.
Moondra
@Moondra Sí, el proyecto todavía está muy vivo y su creador realiza lanzamientos frecuentes. ¡Sigue siendo un excelente proyecto para diferentes escenarios de uso!
zenw0lf
@ zenw0lf Buen artículo pero todavía me confundo un poco en algunos casos de uso. Por ejemplo, el caso de uso del "último elemento", ¿por qué es mejor agregar Redis en este caso? lo que está en la base de datos agregamos en una tabla específica solo para tener una identificación de usuario, comentario (id) y / o marca de tiempo, y usar esto directamente. ¿No será esto lo mismo?
Tony Lin
1
@TonyLin Es a la vez, es rápido porque está en la memoria y porque Redis también tiene una implementación bastante buena de modelos de datos de vanguardia para ayudarlo a hacer su trabajo lo mejor posible.
zenw0lf
9
  • Me encantaría usar redis en los proyectos en tiempo real. Lo hice recientemente para un sistema de seguimiento gps que se creó previamente en mysql como base de datos.

    VENTAJA

    1. Cada vez que el rastreador transmite datos, no necesito abrir la conexión mysql y almacenarla. Podemos guardarlo en redis y luego migrar a mysql usando algún otro proceso. Esto evitará la conexión concurrente del rastreador mutiple a mysql.
    2. Puedo publicar todos esos datos GPS y otros clientes (javascript / android) pueden suscribirse en tiempo real usando la cola de mensajes basada en redis
    3. Puedo activar alertas en tiempo real
sumitir
fuente
3

Una cosa de la mano es que Redis no es una base de datos relacional. Si va a necesitar un SQL "JOIN", no querrá usar Redis ni ninguna otra base de datos no relacional. Sin embargo, Redis es más rápido que la mayoría de las bases de datos relacionales. Si solo va a hacer consultas de pares clave: valor, entonces querrá usar Redis.

EhevuTov
fuente
Entonces, por ejemplo, ¿sería bueno usar redis para obtener información sobre una sesión de usuario para que sea más rápido acceder a nombre, correo electrónico, ID, etc.?
Chris Abrams
Yo creo que si. El gabinete de Kioto sería aún más rápido para eso, creo.
EhevuTov