MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB mit redis

Redis und MongoDB können mit guten Ergebnissen zusammen verwendet werden. Ein Unternehmen, das dafür bekannt ist, MongoDB und Redis (zusammen mit MySQL und Sphinx) auszuführen, ist Craiglist. Siehe diese Präsentation von Jeremy Zawodny.

MongoDB ist interessant für persistente, dokumentenorientierte, auf verschiedene Weise indizierte Daten. Redis ist interessanter für flüchtige Daten oder latenzempfindliche semipersistente Daten.

Hier sind einige Beispiele für die konkrete Verwendung von Redis auf MongoDB.

  • Pre-2.2 MongoDB hat noch keinen Ablaufmechanismus. Gekappte Sammlungen können nicht wirklich verwendet werden, um eine echte TTL zu implementieren. Redis verfügt über einen TTL-basierten Ablaufmechanismus, der es bequem macht, flüchtige Daten zu speichern. Beispielsweise werden Benutzersitzungen üblicherweise in Redis gespeichert, während Benutzerdaten in MongoDB gespeichert und indiziert werden. Beachten Sie, dass MongoDB 2.2 einen Ablaufmechanismus mit geringer Genauigkeit auf Erfassungsebene eingeführt hat (zum Beispiel zum Löschen von Daten).

  • Redis bietet einen praktischen Set-Datentyp und die damit verbundenen Operationen (Vereinigung, Schnittmenge, Differenz bei mehreren Sets usw.). Es ist ziemlich einfach, zusätzlich zu dieser Funktion eine grundlegende facettierte Such- oder Tagging-Engine zu implementieren, was eine interessante Ergänzung zu den traditionelleren Indizierungsfunktionen von MongoDB darstellt.

  • Redis unterstützt effiziente blockierende Pop-Operationen für Listen. Dies kann verwendet werden, um ein verteiltes Ad-hoc-Warteschlangensystem zu implementieren. Es ist flexibler als MongoDB Tailable Cursors IMO, da eine Backend-Anwendung mehrere Warteschlangen mit einem Timeout abhören, Elemente atomar in eine andere Warteschlange übertragen usw. kann. Wenn die Anwendung eine gewisse Warteschlange erfordert, ist es sinnvoll, die Warteschlange in Redis zu speichern , und bewahren Sie die persistenten Funktionsdaten in MongoDB auf.

  • Redis bietet auch einen Pub/Sub-Mechanismus. In einer verteilten Anwendung kann ein Ereignisweitergabesystem nützlich sein. Dies ist wiederum ein hervorragender Anwendungsfall für Redis, während die persistenten Daten in MongoDB gehalten werden.

Da es viel einfacher ist, ein Datenmodell mit MongoDB zu entwerfen als mit Redis (Redis ist eher Low-Level), ist es interessant, von der Flexibilität von MongoDB für persistente Hauptdaten und von den zusätzlichen Funktionen von Redis (geringe Latenz) zu profitieren , Artikelablauf, Warteschlangen, Pub/Sub, Atomblöcke usw.). Es ist in der Tat eine gute Kombination.

Bitte beachten Sie, dass Sie niemals einen Redis- und einen MongoDB-Server auf demselben Computer ausführen sollten. MongoDB-Speicher ist so konzipiert, dass er ausgelagert werden kann, Redis nicht. Wenn MongoDB eine Swapping-Aktivität auslöst, wird die Leistung von Redis katastrophal sein. Sie sollten auf verschiedenen Knoten isoliert werden.