2012-04-25 55 views
16

Tôi đã thấy nhiều người sử dụng Redis làm bộ nhớ cache gần đây, tại sao không phải là Mongo? Theo như tôi có thể nói Redis có thể đặt ngày hết hạn trên một chỉ mục, như memcache nhưng nếu không thì có bất kỳ lý do nào không sử dụng Mongo cho điều này không?Tại sao lại sử dụng Redis thay vì MongoDb cho Caching?

Tôi hỏi khi tôi đang tham gia vào MySQL lớn và sau đó thay đổi dữ liệu sau khi chọn. Tôi đã sử dụng memcache trên các phần khác của trang web nhưng lưu điều này trong Mongo sẽ cho phép tôi thực hiện tìm kiếm không gian địa lý trên dữ liệu được lưu trong bộ nhớ cache.

Trả lời

13

Rất nhiều người sử dụng MongoDB cho bộ nhớ cache cấp thấp và nó hoạt động rất tốt.

Vì tính năng này cung cấp nhiều chức năng hơn cửa hàng giá trị khóa đơn giản thông qua truy vấn đặc biệt, không phải là lớp bộ nhớ đệm như memcache hoặc redis (có thể chậm hơn để chèn và truy xuất dữ liệu).

Hiệu suất cực cao có thể đạt được (bộ làm việc nằm trong RAM sau khi tất cả), nhưng mô hình dữ liệu nặng hơn. Tuy nhiên, mặt khác, MongoDB cung cấp một lớp kiên trì có ý nghĩa hơn (đối với hầu hết các nhà phát triển) đối với loại dữ liệu có khả năng cần thiết sau này, không giống như Redis.

+4

Các tính năng MongoDB khác như [bộ sưu tập có giới hạn] (http://www.mongodb.org/display/DOCS/Capped+Collections) cũng có thể hữu ích trong các lớp đệm. Ngoài ra còn có một yêu cầu tính năng cho [bộ sưu tập TTL có thể cấu hình] (https://jira.mongodb.org/browse/SERVER-211) sẽ rất hữu ích cho việc lưu các lớp đệm, mặc dù nó chưa được triển khai. – dcrosta

+5

Nó được triển khai ngay bây giờ :) – wprl

+0

Bộ sưu tập TTL có thể cấu hình: https://docs.mongodb.com/manual/tutorial/expire-data/ –

3

Khi chúng tôi nói bộ nhớ đệm, tốc độ xuất hiện trong đầu bạn. Mục đích ở đây là thiết lập và lấy một cái gì đó càng nhanh càng tốt. Theo nghĩa này, redis nhanh hơn mongodb. Tuy nhiên, nếu bạn thấy rằng mongodb thích hợp để thực hiện tìm kiếm không gian địa lý trên dữ liệu được lưu trong bộ nhớ cache, bạn có thể sử dụng nó. Bạn có thể đầu tư một thời gian và thực hiện tương tự trong redis, và sau đó chuẩn để xem những gì bạn đạt được.

10

Sự khác biệt lớn nhất giữa MongoDB và Redis là Redis thường lưu toàn bộ cơ sở dữ liệu trong bộ nhớ. MongoDB sử dụng một tệp ánh xạ bộ nhớ để giả vờ tất cả mọi thứ có trong bộ nhớ và cho phép các bit của trang OS vào và ra khỏi đĩa khi cần thiết. Nếu hệ điều hành có thể giữ tất cả mọi thứ trong bộ nhớ, hiệu suất sẽ hơi giống nhau.

+0

Redis giữ hai bản sao, một bản ghi nhớ và một bản sao trên đĩa – Craneum

+0

Bắt đầu từ phiên bản 3.2, WiredTiger là công cụ lưu trữ mặc định cho MongoDB. –

Các vấn đề liên quan