Quelqu'un peut-il donner des exemples d’utilisation de lorsque vous bénéficieriez d’utiliser Redis et MongoDB en conjonction avec l’autre ?
Réponses
Trop de publicités?MongoDB et Redis peut être utilisé avec de bons résultats. Une société bien connu pour l'exécution de MongoDB et Redis (avec MySQL et Sphinx) est Craiglist. Voir cette présentation de Jeremy Zawodny.
MongoDB est intéressant pour les persistants, document orienté, les données indexées de diverses manières. Redis est plus intéressant pour les données volatiles, ou de latence sensibles semi-persistant de données.
Voici quelques exemples concrets de l'utilisation de Redis sur le dessus de MongoDB.
Pré-2.2 MongoDB ne dispose pas encore d'un mécanisme d'expiration. Plafonné collections ne peut pas vraiment être utilisé pour mettre en œuvre une véritable TTL. Redis a une durée de vie basé sur l'expiration mécanisme, très pratique pour stocker des données volatiles. Par exemple, les sessions utilisateur sont généralement stockés dans le Redis, tandis que les données de l'utilisateur seront stockés et indexés dans MongoDB. Notez que MongoDB 2.2 a introduit une faible précision de l'expiration mécanisme au niveau de la collection (à être utilisé pour la purge de données par exemple).
Redis permet de définir le type de données et ses opérations connexes (union, intersection, différence sur plusieurs jeux, etc ...). Il est assez facile à mettre en œuvre une base de recherche à facettes ou de marquage du moteur sur le dessus de cette fonctionnalité, qui est un ajout intéressant à MongoDB plus traditionnelles fonctions d'indexation.
Redis prend en charge efficace de blocage de pop opérations sur les listes. Ceci peut être utilisé pour mettre en œuvre une ad-hoc distribués système de file d'attente. Il est plus souple que MongoDB tailable les curseurs de l'OMI, depuis une application backend pouvez écouter plusieurs files d'attente avec un délai d'attente, le transfert d'éléments d'une autre file d'attente de façon atomique, etc ... Si l'application nécessite certaines files d'attente, il est judicieux de stocker la file d'attente dans le Redis, et de garder la persistance de la fonctionnelle de données dans MongoDB.
Redis propose également un pub/sub mécanisme. Dans une application distribuée, une propagation des événements système peut être utile. C'est encore une fois un excellent cas d'utilisation de Redis, tandis que les données persistantes sont conservés dans MongoDB.
Parce qu'il est beaucoup plus facile à concevoir un modèle de données avec MongoDB qu'avec le Redis (Redis est à un niveau plus bas), il est intéressant de bénéficier de la souplesse de MongoDB pour les principales données persistantes, et l'une des fonctionnalités supplémentaires fournies par le Redis (faible temps de latence, le point d'expiration, les files d'attente, pub/sub, atomique, blocs, etc ...). C'est en effet une bonne combinaison.
Veuillez noter que vous ne devriez jamais utiliser un serveur MongoDB et Redis sur la même machine. MongoDB mémoire est conçue pour être permutées, Redis ne l'est pas. Si MongoDB déclenche une permutation de l'activité, la performance de Redis va être catastrophique. Ils doivent être isolés sur des nœuds différents.
Évidemment il y a beaucoup plus de différences que ça, mais une très grande vue d'ensemble:
Pour des cas d'utilisation:
- Redis est souvent utilisé comme une couche de mise en cache ou tableau blanc partagé pour le calcul distribué.
- MongoDB est souvent utilisé comme un swap de remplacement pour traditionnelle des bases de données SQL.
Techniquement:
- Redis est une mémoire db avec disque de persistance (l'ensemble de la db doit tenir en mémoire).
- MongoDB est un disque soutenu db lequel a besoin de suffisamment de RAM pour les indices.
Il ya un certain chevauchement, mais il est extrêmement fréquent d'utiliser les deux. Voici pourquoi:
- MongoDB peut stocker plus de données moins cher.
- Redis est plus rapide pour l'ensemble du jeu de données.
- MongoDB la culture est "stocker l'ensemble, comprendre les tendances de l'accès à plus tard"
- Redis la culture est "examiner attentivement la façon dont vous allez accéder à des données, puis le stocker"
- Les deux ont des outils open source qui en dépendent, dont beaucoup sont utilisés ensemble.
Redis peut être utilisé comme un remplacement pour une traditionnelle de la banque de données, mais il est le plus souvent utilisé avec un autre normal "long" banque de données, comme Mongo, Postgresql, MySQL, etc.