Redis i MongoDB mogą być używane razem z dobrymi wynikami. Firmą znaną z obsługi MongoDB i Redis (wraz z MySQL i Sphinxem) jest Craiglist. Zobacz tę prezentację Jeremy'ego Zawodnego.
MongoDB jest interesujące dla trwałych, zorientowanych na dokumenty danych indeksowanych na różne sposoby. Redis jest bardziej interesujący w przypadku danych niestabilnych lub półtrwałych danych wrażliwych na opóźnienia.
Oto kilka przykładów konkretnego użycia Redis na bazie MongoDB.
-
MongoDB w wersji wcześniejszej niż 2.2 nie ma jeszcze mechanizmu wygaśnięcia. Kolekcje ograniczone nie mogą tak naprawdę być używane do implementacji rzeczywistego czasu TTL. Redis ma mechanizm wygasania oparty na TTL, co ułatwia przechowywanie danych ulotnych. Na przykład sesje użytkowników są zwykle przechowywane w Redis, podczas gdy dane użytkowników będą przechowywane i indeksowane w MongoDB. Zwróć uwagę, że MongoDB 2.2 wprowadził mechanizm wygasania o niskiej dokładności na poziomie gromadzenia (na przykład do czyszczenia danych).
-
Redis zapewnia wygodny typ danych zestawu i powiązane z nim operacje (łącznik, przecięcie, różnica w wielu zestawach itp.). Zaimplementowanie podstawowego mechanizmu wyszukiwania aspektowego lub tagowania na tej funkcji jest dość łatwe, co jest interesującym dodatkiem do bardziej tradycyjnych możliwości indeksowania MongoDB.
-
Redis obsługuje efektywne blokowanie operacji pop na listach. Można to wykorzystać do wdrożenia systemu kolejkowania rozproszonego ad-hoc. Jest bardziej elastyczny niż kursory ogonowe MongoDB IMO, ponieważ aplikacja zaplecza może nasłuchiwać kilku kolejek z limitem czasu, przesyłać elementy do innej kolejki niepodzielnie itp. Jeśli aplikacja wymaga jakiegoś kolejkowania, sensowne jest przechowywanie kolejki w Redis i zachowaj trwałe dane funkcjonalne w MongoDB.
-
Redis oferuje również mechanizm pub/sub. W aplikacji rozproszonej przydatny może być system propagacji zdarzeń. Jest to ponownie doskonały przypadek użycia dla Redis, podczas gdy trwałe dane są przechowywane w MongoDB.
Ponieważ znacznie łatwiej jest zaprojektować model danych za pomocą MongoDB niż za pomocą Redis (Redis jest bardziej niskopoziomowy), warto skorzystać z elastyczności MongoDB dla głównych trwałych danych oraz z dodatkowych funkcji zapewnianych przez Redis (niskie opóźnienia , wygaśnięcie pozycji, kolejki, pub/sub, bloki atomowe itp.). To naprawdę dobra kombinacja.
Pamiętaj, że nigdy nie powinieneś uruchamiać serwera Redis i MongoDB na tym samym komputerze. Pamięć MongoDB jest przeznaczona do wymiany, Redis nie. Jeśli MongoDB uruchomi jakąś aktywność wymiany, wydajność Redis będzie katastrofalna. Powinny być izolowane w różnych węzłach.