Redis и MongoDB могат да се използват заедно с добри резултати. Компания, добре известна с управлението на MongoDB и Redis (заедно с MySQL и Sphinx), е Craiglist. Вижте тази презентация от Джеръми Заводни.
MongoDB е интересен за постоянни, ориентирани към документи, данни, индексирани по различни начини. Redis е по-интересен за летливи данни или чувствителни към забавяне полупостоянни данни.
Ето няколко примера за конкретно използване на Redis върху MongoDB.
-
MongoDB преди 2.2 все още няма механизъм за изтичане. Ограничените колекции наистина не могат да се използват за внедряване на истински TTL. Redis има TTL-базиран механизъм за изтичане, което го прави удобен за съхранение на нестабилни данни. Например, потребителските сесии обикновено се съхраняват в Redis, докато потребителските данни ще се съхраняват и индексират в MongoDB. Имайте предвид, че MongoDB 2.2 въведе механизъм за изтичане с ниска точност на ниво събиране (да се използва за изчистване на данни например).
-
Redis предоставя удобен тип данни за набор и свързаните с него операции (обединение, пресичане, разлика в множество набори и т.н. ...). Доста лесно е да се внедри основно фасетно търсене или машина за маркиране върху тази функция, което е интересно допълнение към по-традиционните възможности за индексиране на MongoDB.
-
Redis поддържа ефективно блокиране на изскачащи операции в списъци. Това може да се използва за внедряване на ad-hoc разпределена система за опашка. Той е по-гъвкав от MongoDB tailable курсори IMO, тъй като бекенд приложение може да слуша няколко опашки с изчакване, да прехвърля елементи в друга опашка атомарно и т.н. ... Ако приложението изисква известно опашка, има смисъл да съхранявате опашката в Redis и съхранявайте постоянните функционални данни в MongoDB.
-
Redis също така предлага механизъм за пъб/суб. В разпределено приложение може да бъде полезна система за разпространение на събития. Това отново е отличен случай на използване на Redis, докато постоянните данни се съхраняват в MongoDB.
Тъй като е много по-лесно да се проектира модел на данни с MongoDB, отколкото с Redis (Redis е по-ниско ниво), интересно е да се възползвате от гъвкавостта на MongoDB за основни постоянни данни и от допълнителните функции, предоставени от Redis (ниска латентност , изтичане на артикула, опашки, pub/sub, атомни блокове и т.н. ...). Това наистина е добра комбинация.
Моля, имайте предвид, че никога не трябва да стартирате Redis и MongoDB сървър на една и съща машина. Паметта MongoDB е проектирана да се разменя, Redis не. Ако MongoDB задейства някаква размяна, производителността на Redis ще бъде катастрофална. Те трябва да бъдат изолирани на различни възли.