MongoDB avec redis

Quelqu’un peut-il donner des exemples d’utilisation de l’utilisation de Redis et de MongoDB conjointement?

Redis et MongoDB peuvent être utilisés avec de bons résultats. Une société bien connue pour exécuter MongoDB et Redis (avec MySQL et Sphinx) est Craiglist. Voir cette présentation de Jeremy Zawodny.

MongoDB est intéressant pour les données persistantes, orientées document, indexées de différentes manières. Redis est plus intéressant pour les données volatiles ou les données semi-persistantes sensibles à la latence.

Voici quelques exemples d’utilisation concrète de Redis sur MongoDB.

  • Pré-2.2 MongoDB n’a pas encore de mécanisme d’expiration. Les collections plafonnées ne peuvent pas vraiment être utilisées pour implémenter un véritable TTL. Redis dispose d’un mécanisme d’expiration basé sur TTL, ce qui facilite le stockage de données volatiles. Par exemple, les sessions utilisateur sont généralement stockées dans Redis, tandis que les données utilisateur seront stockées et indexées dans MongoDB. Notez que MongoDB 2.2 a introduit un mécanisme d’expiration de faible précision au niveau de la collection (à utiliser pour purger les données, par exemple).

  • Redis fournit un type de données prédéfini et ses opérations associées (union, intersection, différence sur plusieurs ensembles, etc.). Il est très facile d’implémenter un moteur de recherche ou de marquage à facettes de base en plus de cette fonctionnalité, ce qui constitue un ajout intéressant aux fonctionnalités d’indexation plus traditionnelles de MongoDB.

  • Redis prend en charge les opérations pop bloquantes efficaces sur les listes. Cela peut être utilisé pour implémenter un système de queue dissortingbué ad hoc. Il est plus flexible que les curseurs IMO disponibles pour MongoDB, car une application backend peut écouter plusieurs files d’attente avec un timeout, transférer des éléments dans une autre file, etc. Si l’application nécessite des files d’attente, il est judicieux de stocker la file et conservez les données fonctionnelles persistantes dans MongoDB.

  • Redis propose également un mécanisme pub / sub. Dans une application dissortingbuée, un système de propagation d’événements peut être utile. Ceci est encore un excellent cas d’utilisation pour Redis, tandis que les données persistantes sont conservées dans MongoDB.

Comme il est beaucoup plus facile de concevoir un modèle de données avec MongoDB qu’avec Redis (Redis est de bas niveau), il est intéressant de bénéficier de la flexibilité de MongoDB pour les principales données persistantes et des fonctionnalités supplémentaires fournies par Redis (faible latence , expiration de l’article, files d’attente, pub / sous, blocs atomiques, etc …). C’est en effet une bonne combinaison.

Veuillez noter que vous ne devez jamais exécuter un serveur Redis et MongoDB sur le même ordinateur. La mémoire MongoDB est conçue pour être échangée, ce n’est pas le cas de Redis. Si MongoDB déclenche une activité de permutation, les performances de Redis seront catastrophiques. Ils doivent être isolés sur des nœuds différents.

De toute évidence, il y a beaucoup plus de différences que cela, mais pour un aperçu extrêmement élevé:

Pour les cas d’utilisation:

  • Redis est souvent utilisé comme couche de mise en cache ou tableau blanc partagé pour le calcul dissortingbué.
  • MongoDB est souvent utilisé pour remplacer les bases de données SQL traditionnelles.

Techniquement:

  • Redis est une firebase database en mémoire avec une persistance de disque (toute la firebase database doit tenir dans la RAM).
  • MongoDB est une firebase database sauvegardée sur disque qui ne nécessite que suffisamment de RAM pour les index.

Il y a un certain chevauchement, mais il est extrêmement courant d’utiliser les deux. Voici pourquoi:

  • MongoDB peut stocker plus de données moins chères.
  • Redis est plus rapide pour l’dataset.
  • La culture de MongoDB est “stocker tout, comprendre les modèles d’access plus tard”
  • La culture de Redis est “examiner attentivement comment vous allez accéder aux données, puis les stocker”
  • Les deux ont des outils open source qui en dépendent, dont beaucoup sont utilisés ensemble.

Redis peut remplacer un magasin de données traditionnel, mais il est le plus souvent utilisé avec un autre magasin de données “long” normal, comme Mongo, Postgresql, MySQL, etc.