2009-07-27 8 views
6

मैं जावा ईई एप्लिकेशन कर रहा हूं, और मैं उस बिंदु पर हूं जहां मैंने निष्कर्ष निकाला है कि मुझे अपनी वस्तुओं के लिए कैश की आवश्यकता है।कैश कार्यान्वयन उठाएं, या अपना खुद का रोल करें?

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

तो, मैं इसके बारे में विचार पूछ रहा हूं: मुझे अपना खुद का स्थिर डेटा क्यों कर सकता है, जब मैं एक तैयार कैश चुनूं? और इसके विपरीत; जब मैं एक तैयार कैश उठा सकता हूं, तो मुझे एक स्थिर वर्ग क्यों लिखना चाहिए? साथ जटिल वस्तुओं के लिए एक कैश के रूप में इस्तेमाल किया जा सकता

उत्तर

6

जटिल ऑब्जेक्ट रेखांकन मैं एक एक लाइनर

new MapMaker().weakKeys().makeMap(); 

इस के साथ अच्छी पर्याप्त प्रदर्शन किया था के कई मामलों के लिए, Google collections का उपयोग कर एक मानचित्र बनाता है।

चूंकि चाबियाँ कमज़ोर हैं, और आखिरकार गुंजाइश से बाहर निकलती हैं, यह संभावना नहीं है कि इससे स्मृति समस्याएं पैदा होंगी।

तो मैं साधारण मामलों के लिए कहूंगा - वितरित कैश के "संज्ञानात्मक भार" से परेशान न हों। सीरियलाइजेशन मुद्दे, विलंबता आदि .. आप उनको संभालना नहीं चाहेंगे।

+0

यह मैपमेकर मेरे लिए कुछ नया है। मुझे इसे देखना चाहिए। पारितोषिक के लिए धन्यवाद! –

9

खुले स्रोत और वाणिज्यिक दोनों ही कई कैश कार्यान्वयन हैं। सही कैश लिखने के बारे में कई मुद्दे हैं - ऑब्जेक्ट्स, बेदखल नीतियों, दृढ़ता, स्मृति प्रबंधन, आदि के लिए जाने का समय, इसलिए मैं अपना खुद का एक शुरू नहीं करूंगा (पहिया को फिर से शुरू क्यों करें?)

निम्नलिखित कार्यान्वयन में से एक पर एक नज़र डालें:

अधिक पर http://java-source.net/open-source/cache-solutions

+0

तो, मान लीजिए कि मेरे पास एक-वीएम एप्लीकेशन है जो एक बार में कैश में इच्छित सभी डेटा को फिट कर सकता है, क्या आप कहेंगे कि तैयार कार्यान्वयन ने लाभ जोड़े हैं? स्वाभाविक रूप से, एक बार और अधिक वीएम होते हैं, या मैं कैश में एक बार में सभी डेटा फिट नहीं कर सकता, तो पहिया को फिर से शुरू करने का कोई अच्छा कारण नहीं है। –

+2

कई चीजों के साथ, ऐसा लगता है कि मौजूदा कैश पुस्तकालयों के कार्यान्वयनकर्ताओं ने आपके द्वारा चलाए जाने वाले कई मुद्दों के बारे में सोचा है।आपको शायद प्रत्येक के लिए विवरण कम से कम पढ़ना चाहिए ताकि जब आपके कैश को कोडिंग में कोई समस्या आती है तो आप उन्हें आसानी से पहचान सकते हैं और कम से कम एक संभावित समाधान। –

3

"मैं एक स्थिर वर्ग लिखना चाहिए, जब मैं एक रेडीमेड कैश ले सकते हैं?" देखें

जब आप अपनी परियोजना में तीसरे पक्ष की निर्भरताओं को शामिल नहीं करना चाहते हैं और कैश लिखना सीखने का कोई बेहतर तरीका नहीं है।

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