मेमकैच वितरित किया जाता है - महत्वपूर्ण रूप से इसका मतलब है कि यदि मेरे पास कैश तक पहुंचने वाले सर्वरों का समूह है, तो वे सभी एक ही कैश से पढ़ रहे हैं और लिख रहे हैं। .NET कैश में निर्मित इस सुविधा में नहीं है (कम से कम मुझे पता है कि ASP.Net कोई नहीं करता है)।
इसका मतलब यह है प्रत्येक मशीन अपनी स्वतंत्र कैश नहीं है (उदाहरण के लिए) है कि: मशीन एक गणना करता है/
- तो एक मूल्य और कैश में स्थानों इसे पढ़ता है, मशीन बी से कोई लाभ नहीं मिलता है इस। प्रत्येक मशीन को अपने स्वयं के कैश को स्वतंत्र रूप से बनाए रखने और भरने की आवश्यकता होती है। यह संभावित रूप से अंतरिक्ष को बर्बाद कर देता है क्योंकि एक ही प्रविष्टि कई अलग-अलग मशीनों के कैश में मौजूद हो सकती है।
- मशीन बी एक कैश प्रविष्टि को अमान्य कर रहे हैं, तो मशीन एक इस अमान्यकरण के बारे में पता नहीं होगा और बासी उपयोग करने के लिए/तिथि डेटा से बाहर
Memcached उन समस्याओं में से न तो है जारी रख सकते हैं - एक बार एक प्रविष्टि रखा गया है कैश में क्लस्टर में सभी मशीनें उसी कैश किए गए आइटम को पुनर्प्राप्त कर सकती हैं। कैश में एक प्रविष्टि को अमान्य करना इसे सभी के लिए अमान्य करता है।
नुकसान
आपके आवेदन मशीनों के एक समूह पर कार्य करने की जरूरत है तो यह बहुत संभव है कि आप एक वितरित कैश से लाभ होगा, लेकिन यदि आपके आवेदन उसके बाद ही आप एक ही मशीन पर चलने की जरूरत है, तो वितरित कैश का उपयोग करने से कोई लाभ नहीं मिलेगा और शायद अंतर्निहित .NET कैश का उपयोग करके बेहतर होगा।
- एक मेमकैच कैश तक पहुंचने के लिए इंटरप्रोसेस/नेटवर्क संचार की आवश्यकता होती है, जिसमें नेट कैश पर एक छोटा प्रदर्शन जुर्माना होगा।
- मेमकैच बाहरी प्रक्रिया/सेवा के रूप में काम करता है, जिसका अर्थ है कि आपको अपने उत्पादन वातावरण में उस सेवा को स्थापित/चलाने की आवश्यकता है। फिर से नेट कैश को इस चरण की आवश्यकता नहीं है क्योंकि इन्हें प्रक्रिया में होस्ट किया जाता है।
जस्टिन ने अभी उल्लेख किया है कि मैं उच्च उपलब्धता और गलती सहनशीलता के लिए समर्थन क्लस्टरिंग दोनों मेमकैच या ऐपफैब्रिक के लिए जाऊंगा। –