2012-05-22 4 views

답변

153

Redis와 MongoDB를 좋은 결과와 함께 사용할 수 있습니다. MongoDB와 Redis (MySQL과 Sphinx와 함께)를 운영하는 것으로 유명한 회사는 Craiglist입니다. Jeremy Zawodny의 this presentation을 참조하십시오.

MongoDB는 다양한 방식으로 색인 된 영구적 인 문서 지향 데이터에 대해 흥미 롭습니다. Redis는 휘발성 데이터 또는 대기 시간에 민감한 반영구적 데이터에 대해 더 흥미 롭습니다.

다음은 MongoDB 위에 Redis를 구체적으로 사용하는 몇 가지 예입니다.

  • 2.2 이전 MongoDB에는 아직 만료 메커니즘이 없습니다. 캐핑 된 콜렉션은 실제 TTL을 구현하는 데 실제로 사용될 수 없습니다. Redis는 TTL 기반 만료 메커니즘을 가지고있어 휘발성 데이터를 편리하게 저장할 수 있습니다. 예를 들어 사용자 세션은 일반적으로 Redis에 저장되며 사용자 데이터는 MongoDB에 저장되고 색인됩니다. MongoDB 2.2는 수집 레벨 (예를 들어 데이터 삭제에 사용됨)에서 정확도가 낮은 만료 메커니즘을 도입했습니다.

  • Redis는 편리한 데이터 유형 및 관련 작업 (결합, 교차, 여러 세트의 차이 등)을 제공합니다. 이 기능 위에 기본 패싯 검색 또는 태그 지정 엔진을 구현하는 것은 매우 쉽습니다.이 기능은 MongoDB보다 전통적인 인덱싱 기능에 흥미로운 요소입니다.

  • Redis는 목록에서 팝업 작업을 효과적으로 차단합니다. 이는 ad-hoc 분산 대기열 시스템을 구현하는 데 사용될 수 있습니다. 백엔드 어플리케이션은 타임 아웃이있는 여러 큐를 듣고, 다른 큐에 항목을 원자 단위로 전송할 수 있기 때문에 MongoDB tailable 커서 인 IMO보다 유연합니다. 응용 프로그램이 대기열을 필요로하는 경우 대기열을 Redis에 저장하는 것이 좋습니다 , 지속적인 기능 데이터를 MongoDB에 보관하십시오.

  • Redis는 또한 pub/sub 메커니즘을 제공합니다. 분산 응용 프로그램에서 이벤트 전파 시스템이 유용 할 수 있습니다. 영구 데이터가 MongoDB에 보관되는 동안 이것은 Redis의 훌륭한 사용 사례입니다.

는 레디 스보다 MongoDB를 (레디 스보다 낮은 수준이다)와 데이터 모델을 설계 훨씬 용이하기 때문에, 메인 영구 데이터가 MongoDB를의 유연성의 혜택을 흥미, 그리고 여분의 Redis가 제공하는 기능 (낮은 대기 시간, 항목 만료, 대기열, pub/sub, 원자 블록 등). 참으로 좋은 조합입니다.

Redis와 MongoDB 서버를 같은 시스템에서 실행해서는 안됩니다. MongoDB 메모리가 스왑 아웃되도록 설계되었지만 Redis는 그렇지 않습니다. MongoDB가 스와핑 활동을 시작하면 Redis의 성능은 큰 재앙입니다. 다른 노드에서 격리되어야합니다.

+19

MongoDB를 2.2 (단지 릴리스 됨)에는 TTL 지원이 추가되어 첫 번째 요점을 다룹니다. http://docs.mongodb.org/manual/tutorial/expire-data/ –

+0

각각의 비교 우위에 대한 멋진 점. –

+2

각각의 비교 우위에 대한 좋은 점. Redis의 요점 중 하나는 메모리를 조정하는 것입니다. 클러스터링 및 안정성에 중점을 둔 AerospikeDB와 실시간 활용 사례가 Redis가 쉽게 처리 할 수있는 것 이상으로 사용될 때 사용할 수있는 SSD 스토리지와 같이 대기 시간이 적은 다른 프로젝트가 있습니다. –

22

는 분명히 이것보다 까지 많은 차이가 있지만, 매우 높은 개요 : 사용 사례를 들어

: 분산에 대한

  • 레디 스 종종 캐싱 층으로 사용 또는 화이트 보드 공유 계산.
  • MongoDB는 기존 SQL 데이터베이스의 스왑 아웃 대체품으로 자주 사용됩니다.기술적

:

  • 레디 스 디스크 지속성 (전체 DB가 RAM에 적합해야 함)와 메모리 DB이다.
  • MongoDB는 색인을위한 RAM 만 필요로하는 디스크 기반 db입니다.

일부 겹치지 만 두 가지를 모두 사용하는 것이 매우 일반적입니다. 이유는 다음과 같습니다.

  • MongoDB는 더 저렴한 데이터를 저장할 수 있습니다.
  • Redis는 전체 데이터 세트에서 더 빠릅니다.
  • MongoDB를의 문화는 많은 양이 그들에 따라 오픈 소스 도구를
  • "를 저장 한 후, 신중하게 데이터에 액세스 할 수 있습니다 방법을 고려해야"
  • 레디 스의 문화입니다 "모든 것을 저장 나중에 액세스 패턴을 알아낼"입니다 그것들은 함께 사용된다.

레디 스 전통적인 데이터 저장소를 대체 사용할 수 있지만 가장 자주 몽고, PostgreSQL을, MySQL은 같은 다른 정상 "긴"데이터 저장소와 을 사용되는 등

관련 문제