sql >> Database >  >> NoSQL >> MongoDB

MongoDB met redis

Redis en MongoDB kunnen samen worden gebruikt met goede resultaten. Een bedrijf dat bekend staat om het draaien van MongoDB en Redis (samen met MySQL en Sphinx) is Craiglist. Bekijk deze presentatie van Jeremy Zawodny.

MongoDB is interessant voor persistente, documentgeoriënteerde gegevens die op verschillende manieren zijn geïndexeerd. Redis is interessanter voor vluchtige gegevens of latentiegevoelige semi-persistente gegevens.

Hier zijn een paar voorbeelden van concreet gebruik van Redis bovenop MongoDB.

  • Pre-2.2 MongoDB heeft nog geen vervalmechanisme. Afgetopte collecties kunnen niet echt worden gebruikt om een ​​echte TTL te implementeren. Redis heeft een op TTL gebaseerd vervalmechanisme, waardoor het gemakkelijk is om vluchtige gegevens op te slaan. Gebruikerssessies worden bijvoorbeeld gewoonlijk opgeslagen in Redis, terwijl gebruikersgegevens worden opgeslagen en geïndexeerd in MongoDB. Merk op dat MongoDB 2.2 een vervalmechanisme met lage nauwkeurigheid heeft geïntroduceerd op verzamelingsniveau (om bijvoorbeeld te worden gebruikt voor het opschonen van gegevens).

  • Redis biedt een handig set-gegevenstype en de bijbehorende bewerkingen (vereniging, kruising, verschil op meerdere sets, enz ...). Het is vrij eenvoudig om een ​​elementaire zoek- of tagging-engine bovenop deze functie te implementeren, wat een interessante toevoeging is aan de meer traditionele indexeringsmogelijkheden van MongoDB.

  • Redis ondersteunt het efficiënt blokkeren van pop-bewerkingen op lijsten. Dit kan worden gebruikt om een ​​ad-hoc gedistribueerd wachtrijsysteem te implementeren. Het is flexibeler dan MongoDB-aanwijsbare cursors IMO, omdat een backend-applicatie naar verschillende wachtrijen kan luisteren met een time-out, items atomair naar een andere wachtrij kan overbrengen, enz ... Als de applicatie enige wachtrijen vereist, is het logisch om de wachtrij op te slaan in Redis , en bewaar de persistente functionele gegevens in MongoDB.

  • Redis biedt ook een pub/sub-mechanisme. In een gedistribueerde toepassing kan een systeem voor het doorgeven van gebeurtenissen nuttig zijn. Dit is opnieuw een uitstekende use case voor Redis, terwijl de persistente gegevens in MongoDB worden bewaard.

Omdat het veel makkelijker is om met MongoDB een datamodel te ontwerpen dan met Redis (Redis is meer low-level), is het interessant om te profiteren van de flexibiliteit van MongoDB voor de belangrijkste persistente data, en van de extra features die Redis biedt (lage latency , vervaldatum van artikelen, wachtrijen, pub/sub, atomaire blokken, enz ...). Het is inderdaad een goede combinatie.

Houd er rekening mee dat u nooit een Redis- en MongoDB-server op dezelfde machine moet uitvoeren. MongoDB-geheugen is ontworpen om te worden uitgewisseld, Redis niet. Als MongoDB wat swapactiviteiten activeert, zullen de prestaties van Redis catastrofaal zijn. Ze moeten op verschillende knooppunten worden geïsoleerd.



  1. 3 eenvoudige stappen om de beveiliging van uw MongoDB-installatie te verbeteren

  2. Gebruik Redis om een ​​unieke ID te genereren uit een beperkt bereik

  3. Hoe gebruik ik verbindingspools op de juiste manier in redis?

  4. Mongoes meerdere verbindingen