2011-09-08 4 views
12

मैंने अंतर्निहित .NET Framework कैश सिस्टम के बजाय डेटाबेस परिणामों को कैश करने के लिए Memcached का उपयोग करके विकास टीम में कुछ लोगों को देखा। मैं स्पष्ट रूप से समझ में नहीं आता कि वे इस विशिष्ट कैश का उपयोग क्यों करेंगे।.NET कैश सिस्टम की तुलना में मेमकैच के फायदे क्या हैं?

शायद प्रदर्शन बेहतर है।

वैसे भी, क्या Memcached (और मूल .NET कैश नहीं) का उपयोग करने के कोई वास्तविक फायदे हैं?

+0

जस्टिन ने अभी उल्लेख किया है कि मैं उच्च उपलब्धता और गलती सहनशीलता के लिए समर्थन क्लस्टरिंग दोनों मेमकैच या ऐपफैब्रिक के लिए जाऊंगा। –

उत्तर

23

मेमकैच वितरित किया जाता है - महत्वपूर्ण रूप से इसका मतलब है कि यदि मेरे पास कैश तक पहुंचने वाले सर्वरों का समूह है, तो वे सभी एक ही कैश से पढ़ रहे हैं और लिख रहे हैं। .NET कैश में निर्मित इस सुविधा में नहीं है (कम से कम मुझे पता है कि ASP.Net कोई नहीं करता है)।

इसका मतलब यह है प्रत्येक मशीन अपनी स्वतंत्र कैश नहीं है (उदाहरण के लिए) है कि: मशीन एक गणना करता है/

  • तो एक मूल्य और कैश में स्थानों इसे पढ़ता है, मशीन बी से कोई लाभ नहीं मिलता है इस। प्रत्येक मशीन को अपने स्वयं के कैश को स्वतंत्र रूप से बनाए रखने और भरने की आवश्यकता होती है। यह संभावित रूप से अंतरिक्ष को बर्बाद कर देता है क्योंकि एक ही प्रविष्टि कई अलग-अलग मशीनों के कैश में मौजूद हो सकती है।
  • मशीन बी एक कैश प्रविष्टि को अमान्य कर रहे हैं, तो मशीन एक इस अमान्यकरण के बारे में पता नहीं होगा और बासी उपयोग करने के लिए/तिथि डेटा से बाहर

Memcached उन समस्याओं में से न तो है जारी रख सकते हैं - एक बार एक प्रविष्टि रखा गया है कैश में क्लस्टर में सभी मशीनें उसी कैश किए गए आइटम को पुनर्प्राप्त कर सकती हैं। कैश में एक प्रविष्टि को अमान्य करना इसे सभी के लिए अमान्य करता है।

नुकसान

आपके आवेदन मशीनों के एक समूह पर कार्य करने की जरूरत है तो यह बहुत संभव है कि आप एक वितरित कैश से लाभ होगा, लेकिन यदि आपके आवेदन उसके बाद ही आप एक ही मशीन पर चलने की जरूरत है, तो वितरित कैश का उपयोग करने से कोई लाभ नहीं मिलेगा और शायद अंतर्निहित .NET कैश का उपयोग करके बेहतर होगा।

  • एक मेमकैच कैश तक पहुंचने के लिए इंटरप्रोसेस/नेटवर्क संचार की आवश्यकता होती है, जिसमें नेट कैश पर एक छोटा प्रदर्शन जुर्माना होगा।
  • मेमकैच बाहरी प्रक्रिया/सेवा के रूप में काम करता है, जिसका अर्थ है कि आपको अपने उत्पादन वातावरण में उस सेवा को स्थापित/चलाने की आवश्यकता है। फिर से नेट कैश को इस चरण की आवश्यकता नहीं है क्योंकि इन्हें प्रक्रिया में होस्ट किया जाता है।
+0

"एक ज्ञात कैश तक पहुंचने के लिए इंटरप्रोसेस/नेटवर्क संचार की आवश्यकता होती है, जिसमें नेट कैश पर एक छोटा प्रदर्शन जुर्माना होगा जो प्रक्रिया में है।" -> क्या किसी ने इन-प्रोसेस बनाम memcached (उसी एडब्ल्यूए क्षेत्र/एक ही रैक में स्थित) बेंचमार्क किया है? इन-प्रोसेस बनाम मेमकेचे बनाम देखना चाहते हैं।डेटाबेस। – dazbradbury

2

मेमकैड के लिए बेहतर तुलना वास्तव में Azure App Fabric Caching होगी, जिसे .NET 4 और Azure के साथ जोड़ा गया था। यह क्लस्टर और क्लाउड कंप्यूटिंग के लिए लक्षित एक वितरित क्लस्टर-सक्षम कैश समाधान है। हालांकि, मेमकैच भी लंबे समय से (2003-आईएसएच मुझे लगता है) के आसपास रहा है, इसलिए यह अच्छी तरह से स्थापित है, और इसे बेंचमार्क माना जाता है जिसके द्वारा दूसरों का न्याय होता है। Memcached भी वहाँ लगभग हर भाषा के लिए पोर्ट किया गया है, और लिनक्स या विंडोज सर्वर पर चलाया जा सकता है। Azure कैशिंग अभी भी अपेक्षाकृत नया है, इसलिए बहुत से लोगों ने वास्तव में इसका उपयोग नहीं किया है।

+1

Azure ऐप फैब्रिक कैशिंग लिंक काम नहीं कर रहा है –

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