2011-06-02 12 views
34

ehcache एक बेहद विन्यास योग्य जानवर है, और उदाहरण काफी जटिल हैं, अक्सर इंटरफेस की कई परतों को शामिल करते हैं।ehcache के लिए हैलो वर्ल्ड उदाहरण?

क्या कोई भी सबसे सरल उदाहरण में आया है जो स्मृति में एक ही संख्या की तरह कुछ कैश करता है (वितरित नहीं, कोई एक्सएमएल नहीं, जितना संभव हो जावा की कुछ पंक्तियां)। संख्या को 60 सेकेंड के लिए कैश किया जाता है, फिर अगला पठन अनुरोध इसे एक नया मान प्राप्त करने का कारण बनता है (उदाहरण के लिए Random.nextInt() या इसी तरह के कॉल करके)

क्या यह कुछ के लिए अपना खुद का कैश लिखना तेज़/आसान है इस तरह एक सिंगलटन और सिंक्रनाइज़ेशन के साथ थोड़ा सा?

कोई वसंत कृपया नहीं।

उत्तर

38

ईएचकेएसी एक असफलता कॉन्फ़िगरेशन के साथ आता है जिसमें कुछ उचित समाप्ति समय (120 सेकंड) होता है। यह इसे पाने और चलाने के लिए पर्याप्त है।

आयात:

import net.sf.ehcache.CacheManager; 
import net.sf.ehcache.Element; 

फिर, एक कैश बनाने सुंदर सरल है:

CacheManager.getInstance().addCache("test"); 

यह एक कैश test कहा जाता है बनाता है। आपके पास CacheManager द्वारा प्रबंधित कई अलग-अलग, अलग कैश हो सकते हैं। इस कैश को (key, value) जोड़े को जोड़ने के रूप में सरल है:

CacheManager.getInstance().getCache("test").put(new Element(key, value)); 

किसी कुंजी के लिए एक मूल्य प्राप्त कर रहा है के रूप में सरल है के रूप में:

Element elt = CacheManager.getInstance().getCache("test").get(key); 
return (elt == null ? null : elt.getObjectValue()); 

आप सामान्य 120 सेकंड में समाप्त होने के बाद एक तत्व का उपयोग करने का प्रयास करते अवधि, कैश शून्य वापस आ जाएगा (इसलिए चेक देखने के लिए कि elt शून्य है)। आप अपनी खुद की ehcache.xml फ़ाइल बनाकर समाप्ति अवधि समायोजित कर सकते हैं - इसके लिए प्रलेखन ehcache साइट पर सभ्य है।

+0

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

+0

जहां तक ​​मुझे पता है, EhCache, अंतिम अद्यतन पर टाइमशेक के लिए कार्यक्षमता में नहीं बनाया गया है। आप या तो अद्यतन करने पर कैश एंट्री मिटा सकते हैं, या कैश से हथियाने से पहले अपनी जांच कर सकते हैं। जब ऑब्जेक्ट डाला गया था तो EhCache का टाइमस्टैम्प होगा, इसलिए यह आपके लिए किया गया है। जब आपका कैश भर जाता है तो यह अक्सर उपयोग की जाने वाली वस्तुओं को हटाने में भी संभाल लेगा। अंत में, यदि आप चुनते हैं, तो यह आपको भविष्य में और अधिक काम करने की अनुमति देता है। लेकिन, हाँ, कभी-कभी अपना खुद का लेखन सरल होता है। – jbrookover

+0

आपके मूल्यवान उत्तर – Jamsheer

13

jbrookover के जवाब भाषा का काम कार्यान्वयन:

import net.sf.ehcache.CacheManager; 
import net.sf.ehcache.Element; 
import net.sf.ehcache.Cache; 

public class EHCacheDemo { 
    public static final void main(String[] igno_red) { 
     CacheManager cchm = CacheManager.getInstance(); 

     //Create a cache 
     cchm.addCache("test"); 

     //Add key-value pairs 
     Cache cch = cchm.getCache("test"); 
     cch.put(new Element("tarzan", "Jane")); 
     cch.put(new Element("kermit", "Piggy")); 

     //Retrieve a value for a given key 
     Element elt = cch.get("tarzan"); 
     String sPartner = (elt == null ? null : elt.getObjectValue().toString()); 

     System.out.println(sPartner); //Outputs "Jane" 

     //Required or the application will hang 
     cchm.removeAllCaches(); //alternatively: cchm.shutdown(); 
    } 
} 
+1

ईएचसीएच का उपयोग करने वाले लोगों की अधिकांश विधियों का उपयोग करके मीठा और छोटा ट्यूटोरियल जानना आवश्यक है! – Tastybrownies

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