2012-07-13 12 views
10

नीचे दिए गए कोड के साथ बनाए गए गुवा कैश को देखते हुए अधिकतम कैश आकार होता है यदि कोई सेट नहीं होता है?Google Guava कैश के लिए डिफ़ॉल्ट अधिकतम आकार क्या है?

LoadingCache<String, String> loadingCache = CacheBuilder.newBuilder().build(new CacheLoader<String, String>() { 
    @Override 
    public String load(String key) throws Exception 
    { 
     return key.toUpperCase(); 
    } 
}); 

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

उत्तर

22

डिफ़ॉल्ट संचय असीम है: के रूप में javadoc for CacheBuilder बताते

इन सुविधाओं सभी वैकल्पिक हैं

और

डिफ़ॉल्ट संचय CacheBuilder द्वारा बनाई गई किसी भी प्रकार के प्रदर्शन नहीं करेगा उदाहरणों तक बेदखल का

+0

लिंक के लिए बहुत बढ़िया धन्यवाद, मुझे कल गुवा के बारे में पता चला और यह मेरे ब्राउज़र में खुले टैब के बहुत सारे खुले टैब हैं। – ams

+0

क्या उन्होंने डिफ़ॉल्ट 'अधिकतम आकार' मान के संबंध में अनुभाग हटा दिया था? मैं नए javadocs में इसका कोई उल्लेख नहीं ढूँढ सकता, उदा। http://google.github.io/guava/releases/23.6-jre/api/docs/com/google/common/cache/CacheBuilder.html – Henrik

+0

@ हेनरिक डिफ़ॉल्ट 'अधिकतम आकार' मान पर कभी भी कोई अनुभाग नहीं रहा है: जैसा कि "ये सुविधाएं सभी वैकल्पिक हैं" द्वारा निहित, और अधिक स्पष्ट रूप से "कैशबिल्डर द्वारा बनाए गए डिफ़ॉल्ट कैश उदाहरणों से किसी भी प्रकार का बेदखल नहीं करेगा", _no_ डिफ़ॉल्ट मान है, इसलिए कोई निष्कासन नहीं है। –

3

सरल उत्तर कोई सीमा नहीं है, यदि आपका मतलब "डिफ़ॉल्ट" CacheBuilder.maximumSize() कभी नहीं कहा जाता है।

और मुझे नहीं लगता कि आपके एप्लिकेशन को आकार-आधारित बेदखल रणनीति की आवश्यकता है। जब उपयोगकर्ता सत्र समाप्त हो जाते हैं, तो इसे कैश से हटा दें (Cache.invalidate(key))।

और स्ट्रिंग ऊपरी मामले को कैश की आवश्यकता नहीं है, कॉल ऊपरी केस सीधे कैश से कहीं अधिक आसान और प्रभावी है।

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