sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB s redis

Redis a MongoDB lze použít společně s dobrými výsledky. Společnost dobře známá provozováním MongoDB a Redis (spolu s MySQL a Sphinx) je Craiglist. Podívejte se na tuto prezentaci od Jeremyho Zawodného.

MongoDB je zajímavý pro perzistentní, na dokumenty orientovaná data indexovaná různými způsoby. Redis je zajímavější pro volatilní data nebo semiperzistentní data citlivá na latenci.

Zde je několik příkladů konkrétního použití Redis nad MongoDB.

  • Starší verze než 2.2 MongoDB zatím nemá mechanismus vypršení platnosti. Omezené kolekce nelze skutečně použít k implementaci skutečného TTL. Redis má mechanismus expirace založený na TTL, což usnadňuje ukládání nestálých dat. Například uživatelské relace jsou běžně uloženy v Redis, zatímco uživatelská data budou uložena a indexována v MongoDB. Všimněte si, že MongoDB 2.2 zavedl mechanismus vypršení platnosti s nízkou přesností na úrovni sběru (k použití například pro čištění dat).

  • Redis poskytuje pohodlný datový typ sady a související operace (sjednocení, průnik, rozdíl na více sadách atd...). Je docela snadné implementovat základní fasetovaný vyhledávač nebo značkovací stroj nad tuto funkci, což je zajímavý doplněk k tradičnějším možnostem indexování MongoDB.

  • Redis podporuje efektivní blokování pop operací na seznamech. To lze použít k implementaci ad-hoc distribuovaného systému řazení do front. Je flexibilnější než MongoDB tailable kurzory IMO, protože backendová aplikace může naslouchat několika frontám s časovým limitem, přenášet položky do jiné fronty atomicky atd... Pokud aplikace vyžaduje nějaké fronty, má smysl uložit frontu v Redis a udržujte trvalá funkční data v MongoDB.

  • Redis také nabízí hospodský/podřízený mechanismus. V distribuované aplikaci může být užitečný systém šíření událostí. Toto je opět vynikající případ použití pro Redis, zatímco trvalá data jsou uchovávána v MongoDB.

Protože je mnohem snazší navrhnout datový model s MongoDB než s Redis (Redis je spíše nízkoúrovňový), je zajímavé těžit z flexibility MongoDB pro hlavní trvalá data a z dalších funkcí poskytovaných Redis (nízká latence , expirace položky, fronty, pub/sub, atomové bloky atd...). Je to skutečně dobrá kombinace.

Vezměte prosím na vědomí, že byste nikdy neměli spouštět servery Redis a MongoDB na stejném počítači. Paměť MongoDB je navržena pro výměnu, Redis nikoli. Pokud MongoDB spustí nějakou swapovací aktivitu, výkon Redis bude katastrofální. Měly by být izolovány na různých uzlech.



  1. Má MongoDB nativní rozhraní REST?

  2. Jak dotazovat mongodb pomocí „jako“ pomocí java api?

  3. redis scan vrátí prázdné výsledky, ale nenulový kurzor

  4. Bylo dosaženo maximálního počtu připojení Azure Redis Cache