Quand utiliser un magasin de clés / valeurs tel que Redis à la place / à côté d'une base de données SQL?

166

J'ai lu de bonnes choses sur les magasins de clés / valeurs tels que Redis, mais je n'arrive pas à savoir quand il est temps de l'utiliser dans une application.

Disons que je conçois une application Web; Je sais quelle pile je vais utiliser pour le front-end, le back-end, la (les) base (s) de données, etc.

J'apprécierais les exemples node.js ainsi que les exemples non-node.js.

Chris Abrams
la source

Réponses:

102

Je n'arrive pas à comprendre quand il est temps de l'utiliser dans une application.

Je vous recommande de lire ce tutoriel qui contient également des cas d'utilisation. Étant donné que redis est plutôt orienté mémoire, il est vraiment bon pour les données en temps réel fréquemment mises à jour, telles que le stockage de session, la base de données d'état, les statistiques, la mise en cache et ses structures de données avancées offrent une polyvalence à de nombreux autres scénarios.

Redis, cependant, ne remplace pas NoSQL pour les bases de données relationnelles classiques car il ne prend pas en charge de nombreuses fonctionnalités standard du monde SGBDR telles que l'interrogation de vos données, ce qui pourrait le ralentir. Les remplacements sont plutôt des bases de données de documents comme MongoDB ou CouchDB et redis est excellent pour compléter des fonctionnalités spécifiques où la vitesse et la prise en charge des structures de données avancées sont utiles.

yojimbo87
la source
3
Le tutoriel auquel vous avez lié est génial!
Chris Abrams
5
J'ai fait une recherche rapide sur Google avec l'URL de ce site de didacticiel et je suis tombé sur cela comme un succès - slideshare.net/dvirsky/introduction-to-redis-version-2
Paul
66

Je pense que rien n'explique mieux les cas d'utilisation de Redis que cet article: http://antirez.com/post/take-advantage-of-redis-adding-it-to-your-stack.html

Je parie que vous aurez un aha! moment . ;)

Une citation d'un lecteur précédent:

J'ai déjà lu sur Redis et entendu comment les entreprises l'utilisent, mais je n'ai jamais complètement compris son objectif. Après avoir lu ceci, je peux en fait dire que je comprends Redis maintenant et comment il est utile. Étonnant qu'après avoir tellement entendu parler de tout cela, il ne fallait qu'un article relativement simple.

Une citation de l'article:

Redis est différent des autres solutions de base de données à bien des égards: il utilise la mémoire comme support de stockage principal et le disque uniquement pour la persistance, le modèle de données est assez unique, il est à un seul thread, etc. Je pense qu'une autre grande différence est que pour tirer parti de Redis dans votre environnement de production, vous n'avez pas besoin de passer à Redis. Vous pouvez simplement l'utiliser pour faire de nouvelles choses qui n'étaient pas possibles auparavant, ou pour résoudre d'anciens problèmes.

Cas d'utilisation abordés dans l'article:

  • Lentes dernières listes d'articles sur votre page d'accueil
  • Classements et problèmes associés
  • Trier par votes d'utilisateurs et par heure
  • La mise en œuvre expire sur les éléments
  • Compter des trucs
  • N éléments uniques dans un laps de temps donné
  • Analyse en temps réel de ce qui se passe, pour les statistiques, l'anti-spam ou autre
  • Pub / Sub
  • Files d'attente
  • Mise en cache
zenw0lf
la source
Cet article est très utile, j'ai ce que je voulais savoir
Hos Mercury
@ Zenw0lf Redis est-il toujours le meilleur pour la mise en cache simple? Votre message date de 2011, donc je ne sais pas s'il y a autre chose que je devrais utiliser.
Moondra
@Moondra Oui, le projet est toujours bien vivant et son créateur fait des sorties fréquentes. C'est toujours un superbe projet pour différents scénarios d'utilisation!
zenw0lf
@ zenw0lf Bon article mais je suis encore un peu confus dans certains cas d'utilisation. Par exemple, le cas d'utilisation du "dernier élément", pourquoi est-il préférable d'ajouter Redis dans ce cas? ce qui est dans la base de données, nous ajoutons dans une table spécifique juste pour avoir l'ID utilisateur, le commentaire (id) et / ou l'horodatage, et l'utilisons directement. N'est-ce pas pareil?
Tony Lin
1
@TonyLin C'est à la fois, c'est rapide parce que c'est en mémoire et parce que Redis a également une assez bonne implémentation de modèles de données de pointe pour l'aider à faire son travail du mieux qu'il peut.
zenw0lf
9
  • J'adorerais utiliser redis sur les projets en temps réel. Je l'ai fait récemment pour un système de suivi GPS qui était auparavant construit sur mysql en tant que base de données.

    AVANTAGE

    1. Chaque fois que le tracker diffuse des données, je n'ai pas besoin d'ouvrir la connexion mysql et de stocker dessus. Nous pouvons l'enregistrer sur redis et migrer plus tard vers mysql en utilisant un autre processus. Cela évitera une connexion simultanée entre plusieurs trackers et mysql.
    2. Je peux publier toutes ces données gps et d'autres clients (javascript / android) peuvent s'abonner en temps réel à l'aide de la file d'attente de messages basée sur redis
    3. Je peux déclencher des alertes en temps réel
sumit
la source
3

Une chose est que Redis n'est pas une base de données relationnelle. Si vous allez avoir besoin d'un SQL "JOIN", vous ne voudrez pas utiliser Redis, ni aucune autre base de données non relationnelle. Redis est cependant plus rapide que la plupart des bases de données relationnelles. Si vous n'effectuez que des requêtes de paires clé: valeur, vous souhaiterez utiliser Redis.

EhevuTov
la source
Par exemple, serait-il bon d'utiliser redis pour obtenir des informations concernant une session utilisateur afin qu'il soit plus rapide d'accéder au nom, à l'e-mail, à l'identifiant, etc.?
Chris Abrams
Je pense que oui. Le Cabinet de Kyoto serait encore plus rapide pour cela, je pense.
EhevuTov