संक्षेप में, नेट पारिस्थितिकी तंत्र में कौन सी सरल इन-मेमोरी कैश मौजूद है?नेट सरल इन-मेमोरी कैश
क्या मैं देख रहा हूँ है:
- नो-विन्यास (सरल API कॉल के अलावा)। मैं बाह्य विन्यास फाइलों के साथ गड़बड़ नहीं करना चाहता क्योंकि वे सिर्फ तैनाती को जटिल करते हैं।
- समान प्रक्रिया (कुछ बाहरी प्रक्रिया या सर्वर नहीं)। अधिमानतः के रूप में आसानी
var myCache = new SimpleCache(1024 * 1024 * 100); // 100 MB
- निर्दिष्ट मेमोरी सीमा के रूप में बनाया
- आइटम कम से कम उपयोग
- समय आधारित समाप्ति के आधार पर कैश से मंजूरी दे दी (आवश्यक नहीं है, लेकिन यह संभवत: अन्य स्थितियों में उपयोगी बनाता है)
- वर्क्स के साथ
-
: नेट 3,5
मैं पहले से ही इन विकल्पों reasearched है
- एएसपी.Net System.Web.Caching
- इसका एपीआई कैश के आकार पर किसी भी प्रकार के नियंत्रण का समर्थन नहीं करता है, न ही उपयोग के आधार पर प्राथमिकता। नतीजतन आप पूरी तरह से अपनी दया पर हैं जब यह तय करता है कि कैश को खाली करने के लिए पर्याप्त स्मृति दबाव है।
- System.Runtime.Caching
- इस के रूप में एक विकल्प नेट 4.0 में जोड़ा गया है नहीं, और इस पोस्ट यह खराब प्रदर्शन है में इंगित करता है: Performance of system.runtime.caching
- माइक्रोसॉफ्ट उद्यम लाइब्रेरी - कैशिंग ब्लॉक
- हेवीवेट होने की प्रतिष्ठा के अलावा, मुझे XML फ़ाइलों या app.config का उपयोग करके इसकी कॉन्फ़िगरेशन पसंद नहीं है। इसके अलावा, जब यह संग्रहित वस्तुओं की संख्या के आधार पर कैश के आकार को सीमित करने का समर्थन करता है, तो इसमें उन वस्तुओं के SIZE को सीमित करने के लिए तंत्र नहीं होते हैं।
- NCache
- शायद उपयोग के मामले मैं चाहता हूँ के लिए overkill है, लेकिन सबसे महत्वपूर्ण बात यह एक भुगतान उत्पाद है जो कुछ मैं के साथ मुझे सिर्फ एक दिन में एक लेखन की तुलना के साथ सौदा (क्या करना चाहते हैं नहीं है या दो)। हमेशा की तरह, इसके व्यक्त संस्करण में उपयोग सीमाएं किसी भी उत्पादन उद्देश्यों के लिए अपने उपयोग को हतोत्साहित करती हैं।
- memcached
- जो मैं चाहता (बाहरी वितरित प्रक्रिया)
मैं Google प्रोटोकॉल बफ़र (Protobuf शुद्ध) के साथ काम कर रहा हूँ, तो मैं क्या एक है की सटीक विपरीत प्रत्येक आइटम की स्मृति पदचिह्न के अपेक्षाकृत सटीक अनुमान। मैं डाटाबेस एक्सेस से लौटाए गए डेटा को कैशिंग कर रहा हूं, लेकिन मुझे औपचारिक ओआरएम का उपयोग करने की कोई इच्छा नहीं है (मैं वास्तव में पेटापोको का उपयोग कर रहा हूं, लेकिन यह बिंदु के बगल में है)।
इस चरण में मैं एक डबल लिंक्ड सूची और हैश (शब्दकोश) का उपयोग करके अपने स्वयं के कैश को लागू करने की योजना बना रहा हूं, ताकि कैश सीमा तक पहुंचने के बाद हाल ही में कैश से उपयोग की जाने वाली वस्तुओं को छोड़ने के लिए उपलब्ध कराया जा सके। हालांकि, मैं यह देखने के लिए जांचना चाहता था कि क्या मुझे अपना खुद का लुत्फ उठाने से पहले किसी भी उपयुक्त विकल्प के बारे में पता था।
यह कभी आसान नहीं है, एक अच्छी समाप्ति नीति के बिना एक कैश एक स्मृति रिसाव है। जो उपलब्ध है उसे पसंद नहीं करना हमेशा अपना खुद का निर्माण करने के लिए प्रेरणा संख्या एक है। –
एक समाप्ति नीति के बजाय, मैं इसे अधिकतम मेमोरी निर्दिष्ट करना चाहता हूं। आप वास्तव में माप नहीं सकते कि नेट में कितनी मेमोरी ऑब्जेक्ट्स ले रही हैं, लेकिन प्रोटोकॉल बफर का उपयोग मैं कर रहा हूं, इसका एक उपयोगी उपयोगी माप है। –
यदि आप इसे एक सामान्य जेनेरिक कैश के रूप में विकसित करते हैं, तो शायद आप इसे कोडप्रोजेक्ट या जैसे, दूसरों के उपयोग के लिए रख सकते हैं? एक साधारण प्रोटोटाइप को एक साथ प्राप्त करने के लिए काफी सरल होना चाहिए और उच्च परीक्षण कवरेज प्राप्त करना बहुत आसान होना चाहिए। – Michael