2012-04-25 5 views
16

मैंने हाल ही में रेडिस का उपयोग कैश के रूप में देखा है, मोंगो क्यों नहीं? जहां तक ​​मैं कह सकता हूं कि रेडिस इंडेक्स पर एक समाप्ति तिथि निर्धारित कर सकती है, जैसे कि memcache, लेकिन अन्यथा इसके लिए मोंगो का उपयोग न करने के कोई कारण हैं?कैशिंग के लिए मोंगो डीबी के बजाय रेडिस का उपयोग क्यों करें?

मैं पूछता हूं क्योंकि मैं MySQL में एक बड़ा जुड़ाव कर रहा हूं और फिर इसे चुनने के बाद डेटा बदल रहा हूं। मैं साइट के अन्य हिस्सों पर पहले से ही memcache का उपयोग कर रहा हूं लेकिन इसे मोंगो में सहेजने से मुझे कैश किए गए डेटा पर भू-स्थानिक खोज करने की अनुमति मिल जाएगी।

उत्तर

13

बहुत से लोग कम मध्यम ग्रेड कैश के लिए मोंगोडीबी का उपयोग करते हैं और यह बहुत अच्छा काम करता है।

क्योंकि यह विज्ञापन-हाक पूछताछ के माध्यम से एक साधारण कुंजी मूल्य स्टोर की तुलना में अधिक कार्यक्षमता प्रदान करता है, यह एक कैशिंग परत के रूप में एक memcache या redis के रूप में शुद्ध नहीं है (यह डेटा डालने और पुनर्प्राप्त करने के लिए धीमा हो सकता है)।

अत्यधिक उच्च प्रदर्शन प्राप्त करने योग्य है (कामकाजी सेट सभी के बाद रैम में है), लेकिन डेटा मॉडल भारी है।

हालांकि, फ्लिप पक्ष पर, मोंगोडीबी एक स्थिरता परत प्रदान करता है जो डेटा के प्रकार के लिए बहुत अधिक समझ (अधिकतर डेवलपर्स) बनाता है, जो बाद में रेडिस के विपरीत सबसे अधिक आवश्यक है।

+4

अन्य मोंगोडीबी विशेषताएं [कैप्ड संग्रह] (http://www.mongodb.org/display/DOCS/Capped+Collections) कैशिंग परतों में सहायक भी हो सकती हैं। [कॉन्फ़िगर करने योग्य टीटीएल संग्रह] (https://jira.mongodb.org/browse/SERVER-211) के लिए एक सुविधा अनुरोध भी है जो परतों को कैशिंग के लिए बहुत उपयोगी होगा, हालांकि यह अभी तक लागू नहीं हुआ है। – dcrosta

+5

अब इसे कार्यान्वित किया गया है :) – wprl

+0

कॉन्फ़िगर करने योग्य टीटीएल संग्रह: https://docs.mongodb.com/manual/tutorial/expire-data/ –

3

जब हम कैशिंग कहते हैं, गति दिमाग में आती है। यहां लक्ष्य जितना संभव हो सके कुछ सेट करना और पुनर्प्राप्त करना है। इस अर्थ में, रेडिस मोंगोडब से तेज है। हालांकि, अगर आपको लगता है कि मोंगोडब कैश किए गए डेटा पर भू-स्थानिक खोज करने के लिए उपयुक्त है, तो इसका उपयोग करना ठीक है। आप निश्चित रूप से कुछ समय निवेश कर सकते हैं और इसे रेडिस में कार्यान्वित कर सकते हैं, और उसके बाद बेंचमार्क को यह देखने के लिए कि आप क्या हासिल करते हैं।

10

मोंगोडीबी और रेडिस के बीच सबसे बड़ा अंतर यह है कि रेडिस आमतौर पर पूरे डेटाबेस को स्मृति में संग्रहीत करता है। MongoDB स्मृति का मैप किए गए फ़ाइल का उपयोग करता है ताकि सबकुछ स्मृति में हो, और ओएस पेज बिट्स को डिस्क के अंदर और बाहर की अनुमति देता है। यदि ओएस स्मृति में सबकुछ रख सकता है, तो प्रदर्शन कुछ हद तक समान होगा।

+0

रेडिस दो प्रतियां रखता है, एक मेमोरी में और डिस्क पर एक – Craneum

+0

संस्करण 3.2 से शुरू होता है, वायर्ड टाइगर है MongoDB के लिए डिफ़ॉल्ट भंडारण इंजन। –

संबंधित मुद्दे