Redis và MongoDB có thể được sử dụng cùng nhau sẽ mang lại kết quả tốt. Một công ty nổi tiếng với việc chạy MongoDB và Redis (cùng với MySQL và Sphinx) là Craiglist. Xem bài thuyết trình này của Jeremy Zawodny.
MongoDB rất thú vị cho dữ liệu liên tục, định hướng tài liệu, được lập chỉ mục theo nhiều cách khác nhau. Redis thú vị hơn đối với dữ liệu dễ bay hơi hoặc dữ liệu bán liên tục nhạy cảm với độ trễ.
Dưới đây là một vài ví dụ về cách sử dụng cụ thể của Redis trên MongoDB.
-
MongoDB trước 2.2 chưa có cơ chế hết hạn. Bộ sưu tập có giới hạn thực sự không thể được sử dụng để triển khai một TTL thực. Redis có cơ chế hết hạn dựa trên TTL, giúp thuận tiện cho việc lưu trữ dữ liệu biến động. Ví dụ:phiên người dùng thường được lưu trữ trong Redis, trong khi dữ liệu người dùng sẽ được lưu trữ và lập chỉ mục trong MongoDB. Lưu ý rằng MongoDB 2.2 đã giới thiệu cơ chế hết hạn có độ chính xác thấp ở cấp độ thu thập (ví dụ:được sử dụng để xóa dữ liệu).
-
Redis cung cấp một kiểu dữ liệu tập hợp thuận tiện và các hoạt động liên quan của nó (kết hợp, giao điểm, sự khác biệt trên nhiều tập hợp, v.v.). Khá dễ dàng để triển khai công cụ gắn thẻ hoặc tìm kiếm theo khía cạnh cơ bản trên tính năng này, đây là một bổ sung thú vị cho khả năng lập chỉ mục truyền thống hơn của MongoDB.
-
Redis hỗ trợ các hoạt động chặn cửa sổ bật lên trên danh sách một cách hiệu quả. Điều này có thể được sử dụng để triển khai hệ thống xếp hàng phân tán đặc biệt. Nó linh hoạt hơn IMO con trỏ có thể điều chỉnh của MongoDB, vì ứng dụng phụ trợ có thể lắng nghe một số hàng đợi với thời gian chờ, chuyển các mục sang hàng đợi khác một cách nguyên tử, v.v. Nếu ứng dụng yêu cầu một số hàng đợi, bạn nên lưu trữ hàng đợi trong Redis và giữ dữ liệu chức năng liên tục trong MongoDB.
-
Redis cũng cung cấp cơ chế quán rượu / phụ. Trong một ứng dụng phân tán, một hệ thống lan truyền sự kiện có thể hữu ích. Đây lại là một trường hợp sử dụng tuyệt vời cho Redis, trong khi dữ liệu liên tục được giữ trong MongoDB.
Bởi vì việc thiết kế mô hình dữ liệu với MongoDB dễ dàng hơn nhiều so với Redis (Redis ở mức thấp hơn), rất thú vị khi được hưởng lợi từ tính linh hoạt của MongoDB đối với dữ liệu liên tục chính và từ các tính năng bổ sung do Redis cung cấp (độ trễ thấp , mục hết hạn, hàng đợi, pub / sub, khối nguyên tử, v.v.). Đó thực sự là một sự kết hợp tốt.
Xin lưu ý rằng bạn không bao giờ được chạy máy chủ Redis và MongoDB trên cùng một máy. Bộ nhớ MongoDB được thiết kế để hoán đổi, Redis thì không. Nếu MongoDB kích hoạt một số hoạt động hoán đổi, hiệu suất của Redis sẽ rất thảm. Chúng nên được tách biệt trên các nút khác nhau.