sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB med redis

Redis og MongoDB kan bruges sammen med gode resultater. Et firma, der er kendt for at køre MongoDB og Redis (sammen med MySQL og Sphinx) er Craiglist. Se denne præsentation fra Jeremy Zawodny.

MongoDB er interessant for vedvarende, dokumentorienterede, data indekseret på forskellige måder. Redis er mere interessant for flygtige data eller latensfølsomme semi-persistente data.

Her er et par eksempler på konkret brug af Redis oven på MongoDB.

  • Pre-2.2 MongoDB har endnu ikke en udløbsmekanisme. Begrænsede samlinger kan ikke rigtig bruges til at implementere en rigtig TTL. Redis har en TTL-baseret udløbsmekanisme, hvilket gør det praktisk at gemme flygtige data. For eksempel er brugersessioner almindeligvis gemt i Redis, mens brugerdata vil blive gemt og indekseret i MongoDB. Bemærk, at MongoDB 2.2 har indført en udløbsmekanisme med lav nøjagtighed på indsamlingsniveauet (som f.eks. skal bruges til at rense data).

  • Redis giver en praktisk sæt datatype og dens tilknyttede operationer (forening, skæring, forskel på flere sæt osv ...). Det er ret nemt at implementere en grundlæggende facetteret søge- eller tagging-motor oven på denne funktion, som er en interessant tilføjelse til MongoDB mere traditionelle indekseringsmuligheder.

  • Redis understøtter effektiv blokering af pop-operationer på lister. Dette kan bruges til at implementere et ad-hoc distribueret køsystem. Det er mere fleksibelt end MongoDB tailable cursorer IMO, da en backend-applikation kan lytte til flere køer med en timeout, overføre elementer til en anden kø atomisk, osv. ... Hvis applikationen kræver lidt kø, giver det mening at gemme køen i Redis , og behold de vedvarende funktionelle data i MongoDB.

  • Redis tilbyder også en pub/sub-mekanisme. I en distribueret applikation kan et hændelsesformidlingssystem være nyttigt. Dette er igen en glimrende use case for Redis, mens de vedvarende data opbevares i MongoDB.

Fordi det er meget nemmere at designe en datamodel med MongoDB end med Redis (Redis er mere lavt niveau), er det interessant at drage fordel af fleksibiliteten i MongoDB til de vigtigste vedvarende data og fra de ekstra funktioner, som Redis tilbyder (lav latency). , vareudløb, køer, pub/sub, atomblokke osv ...). Det er virkelig en god kombination.

Bemærk venligst, at du aldrig bør køre en Redis- og MongoDB-server på den samme maskine. MongoDB hukommelse er designet til at blive byttet ud, Redis er ikke. Hvis MongoDB udløser noget bytteaktivitet, vil Redis' præstation være katastrofal. De bør isoleres på forskellige noder.



  1. MongoDB $setIntersection

  2. Fejlsikker meddelelsesudsendelse, der skal forbruges af en specifik modtager ved hjælp af redis og python

  3. Redis værdiopdatering

  4. Hent _id'et for det indsatte dokument i Mongo-databasen i NodeJS