web-dev-qa-db-fra.com

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

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

Dites que je suis en train de concevoir une application Web; Je sais quelle pile je vais utiliser pour le front-end, le back-end, la ou les bases de données, etc. Quels sont certains scénarios dans lesquels je choisirais "oh, nous avons également besoin de Redis pour X, Y ou Z."

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

154
Chris Abrams

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

Je vous recommande de lire this tutoriel qui contient également des cas d'utilisation. Redis étant plutôt orienté mémoire, il est vraiment utile pour les données en temps réel fréquemment mises à jour, telles que le magasin 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, n'est pas un substitut de NoSQL aux bases de données relationnelles classiques car il ne prend pas en charge de nombreuses fonctionnalités standard du monde des SGBDR, telles que l'interrogation de vos données qui pourrait le ralentir. Les pièces de remplacement sont plutôt des bases de données de documents telles que MongoDB ou CouchDB et redis est un excellent moyen de compléter des fonctionnalités spécifiques où la rapidité et la prise en charge de structures de données avancées sont pratiques.

93
yojimbo87

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à entendu parler de Redis et entendu comment les entreprises l'utilisent, mais je ne l'ai jamais bien compris. Après avoir lu ceci, je peux réellement dire que je comprends Redis maintenant et que c’est utile. Incroyable qu'après avoir entendu tant de choses à ce sujet, il a fallu un article relativement simple.

Une citation de l'article:

Redis est différente des autres solutions de base de données à bien des égards: elle 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 s’agit d’un seul thread, etc. Je pense qu’une autre grande différence est qu’il n’est pas nécessaire de passer à Redis pour tirer parti de Redis dans votre environnement de production. Vous pouvez simplement l'utiliser pour faire de nouvelles choses qui n'étaient pas possibles auparavant, ou pour résoudre de vieux problèmes.

Cas d'utilisation que l'article aborde:

  • Ralentissez les dernières listes d'articles dans votre page d'accueil
  • Classements et problèmes associés
  • Ordre par votes utilisateur et temps
  • Implémentation expire sur les éléments
  • Compter des choses
  • N éléments uniques dans un laps de temps donné
  • Analyse en temps réel de ce qui se passe, pour les statistiques, anti-spam, ou autre chose
  • Pub/Sub
  • Les files d'attente
  • Mise en cache
60
zenw0lf
  • J'aimerais 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 basé 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 une connexion mysql ni de la stocker. Nous pouvons le sauvegarder sur redis puis migrer vers mysql en utilisant un autre processus. Cela évitera les connexions simultanées entre plusieurs suivis et mysql.
    2. Je peux publier toutes ces données gps et les autres clients (javascript/Android) peuvent s'abonner en temps réel à l'aide d'une file d'attente de messages basée sur redis
    3. Je peux déclencher des alertes en temps réel
7
sumit

Une chose est que Redis n'est pas une base de données relationnelle. Si vous avez besoin d'un "JOIN" SQL, vous ne voudrez pas utiliser Redis, ni aucune autre base de données non relationnelle. Redis est plus rapide que la plupart des bases de données relationnelles. Si vous ne ferez que des requêtes clé-paire de valeurs, vous voudrez utiliser Redis.

2
EhevuTov