2009-03-31 11 views
5

मैं एक क्लाइंट क्लास पर काम कर रहा हूं जिसे नेटवर्क नेटवर्क से डेटा लोड करने की आवश्यकता है। यह सुझाव दिया गया है कि क्लाइंट को मानक कैशिंग सेवा जोड़ने से इसका प्रदर्शन बेहतर हो सकता है।क्या कोई मानक तृतीय पक्ष पायथन कैशिंग कक्षा है?

मुझे लगता है कि मुझे अपनी खुद की कैशिंग कक्षा बनाने की ज़रूरत नहीं है - यह अच्छी तरह से ज्ञात है कि ये विफलता के सामान्य बिंदु प्रदान करते हैं। एक वर्ग का उपयोग करना कहीं बेहतर होगा कि किसी और ने घर के बने कैशिंग सिस्टम को डिबग करने के अपने समय की एक बड़ी राशि खर्च करने के बजाय विकसित किया है। http://ehcache.sourceforge.net/

यह एक सामान्य प्रयोजन उच्च प्रदर्शन कैशिंग वर्ग जो भंडारण के सभी प्रकार का समर्थन कर सकते हैं:

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

तो, क्या कोई कैश-क्लास सुझा सकता है जो मेरे उपयोग के लिए तैयार है। मेरी इच्छा सूची है:

  • कैश में ऑब्जेक्ट्स की संख्या को सीमित करने की क्षमता।
  • कैश में ऑब्जेक्ट की अधिकतम आयु को सीमित करने की क्षमता।
  • LRU वस्तु expirey भंडारण की विभिन्न विधियां (जैसे स्मृति, डिस्क)
  • खैर कम से कम एक प्रसिद्ध आवेदन के द्वारा डिबग, अच्छी तरह से बनाए, उपयोग में चयन करने के लिए
  • की क्षमता।
  • अच्छा प्रदर्शन।

तो, कोई सुझाव?

अद्यतन: मैं वस्तुओं की स्थानीय कैशिंग की तलाश में हूं। जिस सर्वर से मैं कनेक्ट करता हूं वह पहले से ही कैश किया जाता है। Memcached उपयुक्त नहीं है क्योंकि इसे विंडोज क्लाइंट और सर्वर के बीच एक अतिरिक्त नेटवर्क यातायात की आवश्यकता है।

उत्तर

4

मैं memcached का उपयोग करने और cmemcache का उपयोग करने के लिए इसका उपयोग करने की सलाह दूंगा। आप कैश में ऑब्जेक्ट्स की संख्या को जरूरी नहीं सीमित कर सकते हैं, लेकिन आप एक समाप्ति समय निर्धारित कर सकते हैं और इसका उपयोग करने वाली स्मृति की मात्रा को सीमित कर सकते हैं। और memcached का उपयोग कई बड़े नामों द्वारा किया जाता है। असल में, मैं इसे उद्योग मानक की तरह कहूंगा।

अद्यतन:

मैं वस्तुओं की स्थानीय कैशिंग के लिए देख रहा हूँ।

आप स्थानीय स्तर पर memcached चला सकते हैं और स्थानीयहोस्ट के माध्यम से इसका उपयोग कर सकते हैं। मैंने इसे कुछ बार किया है।

इसके अलावा, एकमात्र समाधान जिसे मैं सोच सकता हूं django's caching system है। यह कई बैकएंड और कुछ अन्य विन्यास विकल्प प्रदान करता है। लेकिन यदि आप django का उपयोग नहीं कर रहे हैं तो यह थोड़ा हेवीवेट हो सकता है।

अद्यतन 2: मुझे लगता है कि अंतिम उपाय के रूप में, आप jython का उपयोग भी कर सकते हैं और जावा कैशिंग सिस्टम तक पहुंच सकते हैं। यदि आप पहले ही सीपीथॉन का उपयोग कर क्लाइंट प्राप्त कर चुके हैं तो यह करना मुश्किल हो सकता है।

अद्यतन 3: यह शायद आप के लिए उपयोग की जा करने के लिए थोड़ी देर हो चुकी है, लेकिन मेरा एक पिछले नियोक्ता बात की इस तरह के ZODB इस्तेमाल किया। यह एक वास्तविक डेटाबेस है, लेकिन इसका पढ़ने का प्रदर्शन इसे कैशिंग के लिए उपयोगी बनाने के लिए पर्याप्त तेज़ है।

+0

यह इस मामले में उचित नहीं है ... मैं एक स्थानीय कैश जोड़कर नेटवर्क एप्लिकेशन को तेज़ करने की कोशिश कर रहा हूं। अंत उपयोगकर्ताओं के लिए नेटवर्क कैश धीमा होने जा रहा है क्योंकि वे दुनिया में कहीं भी हो सकते हैं। –

+0

अफसोस की बात है, इस चरण में ज्योथन का उपयोग करना जटिल है। –

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