2016-06-08 4 views
8

मैं इसका उपयोग और व्यवहार समझने के लिए javax.cache.Cache से गुजर चुका हूं। यह कहा गया है कि,जावा कैश का उपयोग कब करें और यह हैश मैप से अलग कैसे है?

जेसीएसी एक मानचित्र जैसी डेटा संरचना है जो एप्लिकेशन डेटा का अस्थायी संग्रहण प्रदान करती है।

जेसीएसी और हैश मैप स्थानीय हीप मेमोरी में तत्वों को संग्रहीत करता है और डिफ़ॉल्ट रूप से दृढ़ता से व्यवहार नहीं करता है। कस्टम CacheLoader और CacheWriter लागू करके हम दृढ़ता प्राप्त कर सकते हैं। इसके अलावा, इसका उपयोग कब करें?

+0

अच्छा प्रश्न के लिए धन्यवाद के विशिष्ट कार्यान्वयन विवरण हैं कर रहे हैं। कैश क्लास में इसका उत्तर दिया जाना चाहिए। उम्मीद है कि अगली रिलीज होगी: https://github.com/jsr107/jsr107spec/issues/365 – cruftex

+0

क्या किसी को पता है कि 'कैशलोडर' और' कैशवाइटर 'के लिए डिफ़ॉल्ट कार्यान्वयन (डिस्क दृढ़ता) क्यों प्रदान नहीं किया गया है? MapDB/RocksDB का उपयोग करके कस्टम कार्यान्वयन तृतीय-पक्ष निर्भरता की ओर जाता है और यह त्रुटि-प्रवण हो सकता है। –

उत्तर

1

दोनों वस्तुओं के बीच पांच मुख्य अंतर यहां दिए गए हैं।

java.util.Map, कैश के विपरीत:

  • अशक्त चाबी या मूल्यों की अनुमति नहीं देते। नल का उपयोग करने के प्रयासों के परिणामस्वरूप java.lang.NullPointerException
  • किसी javax.cache.integration.CacheLoader (रीड-थ्रू-कैशिंग) से मान पढ़ने की क्षमता प्रदान करता है जब अनुरोध किया जा रहा मान कैश में नहीं है
  • परिवर्तन एक javax.cache.integration.CacheWriter (लिखने के माध्यम से-संचय) जब एक मूल्य बनाया जा रहा/अद्यतन/एक कैश
  • कैश प्रविष्टि का पालन करने की क्षमता प्रदान से हटा करने के लिए मूल्यों को लिखने की क्षमता प्रदान करते हैं
  • परिचालन आंकड़ों को कैप्चर और माप सकता है

Source : GrepCode.com

+1

मानचित्र पर शून्य कुंजी या मानों को अनुमति दें कार्यान्वयन कक्षा पर निर्भर करता है। यानी हैश मैप शून्य कुंजी और मानों की अनुमति देता है और हैशटेबल शून्य कुंजी या मानों की अनुमति नहीं देता है। –

+0

@ डेविड एसएन बेशक, विस्तार के लिए धन्यवाद। –

5

कैश आम तौर पर एक नक्शा है, जो और कुछ नहीं लेकिन एक कम या ज्यादा सरल आंकड़ा संरचना कर रहे हैं की तुलना में अधिक प्रबंधन तर्क है।

कुछ अवधारणाओं, JCaches लागू कर सकते हैं

  • समाप्ति: प्रविष्टियां समाप्त हो सकते हैं और समय की एक निश्चित अवधि के बाद या अंतिम उपयोग के बाद से कैश से भी निकल जाते
  • निष्कासन: तत्वों कैश करता है, तो अंतरिक्ष से भी निकल जाते सीमित है। विभिन्न बेदखल रणनीतियों हो सकते हैं। LRU, फीफो, ...
  • वितरण: एक क्लस्टर में IE जबकि मैप्स एक JVM
  • हठ करने के लिए स्थानीय कर रहे हैं: कैश में तत्वों लगातार और वर्तमान पुनः प्रारंभ करने पर हो सकता है, एक मानचित्र की सामग्री को सिर्फ
  • खो रहे हैं
  • अधिक मेमोरी: कैश कार्यान्वयन बिगमेमरी नामक तकनीक का उपयोग करके, जेवीएम हीप प्रदान करता है, जहां कैश कार्यान्वयन अलग-अलग आवंटित बाइटबफर में क्रमबद्ध किया जाता है।यह JVM-बाहरी मेमोरी ओएस (पेजिंग) द्वारा किया जाता है और JVM
  • दुकान कुंजी और मूल्यों या तो मूल्य द्वारा या संदर्भ द्वारा करने का विकल्प (नक्शे में आप स्वयं इस संभाल करने के लिए)
  • विकल्प सुरक्षा
  • लागू करने के लिए नहीं

इन कुछ से कुछ JCache के अधिक सामान्य अवधारणाओं, कुछ कैश प्रदाताओं

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