2011-04-29 8 views
5

में कैश अमान्यता IHcernate में Ehcache का उपयोग कर रहा हूं।Ehcache

डेटाबेस कैश किए गए कैश को मैं कैसे सूचित कर सकता हूं? मैं कैश किए गए डेटा को कैसे अमान्य कर सकता हूं? मैं इसे प्रोग्रामेटिक रूप से कैसे प्राप्त कर सकता हूं?

उत्तर

9

इसका क्या अर्थ है? डेटाबेस में बदलाव करने के 2 तरीके हैं: ऐप & ऐप के बाहर

ऐप के अंदर आप आसानी से एक अमान्यता को ट्रिगर कर सकते हैं। दूसरा हल करने के लिए एक कठिन है। कैश तत्व एक कुंजी के साथ संग्रहीत होते हैं और उस कुंजी के आधार पर आप इसे हटा सकते हैं।

CacheManager manager = CacheManager.getInstance(); 
cache = manager.getCache(cacheName); 
cache.remove(key); 

or 

cache.removeAll(); 

इस बात पर निर्भर करता है कि आपने निश्चित रूप से कैसे कॉन्फ़िगर किया है। लेकिन आपको ऑब्जेक्ट रखने वाले कैश के नाम को जानने की आवश्यकता है।

4

यह आप कैसे परेशान क्या अलग-अलग कैश नाम हैं बिना सभी ehcache आइटम को अमान्य कर सकते हैं:

CacheManager manager = CacheManager.getInstance(); 

String[] names = manager.getCacheNames(); 

for (String name : names) 
{ 
    Cache cache = manager.getCache(name); 

    cache.removeAll(); 
} 
+2

, मैं बदलने के लिए किया था [ '.getCache'] (http: //ehcache.org/apidocs/net/sf/ehcache/CacheManager.html#getCache \ (java.lang.String \)) ['.getEhcache'] के साथ (http://ehcache.org/apidocs/net /sf/ehcache/CacheManager.html#getEhcache \ (java.lang.String \)), और ['कैश'] (http://ehcache.org/apidocs/net/sf/ehcache/Cache.html) के साथ [ 'Ehcache'] (http://ehcache.org/apidocs/net/sf/ehcache/hibernate/EhCache.html)। अन्यथा, '.getCache' मौजूद कैश के लिए भी' शून्य 'देता है। – moshen

+0

मेरे विन्यास के रूप में मेरे लिए काम नहीं किया [हाइबरनेट ehcache समयToLiveSeconds काम नहीं कर रहा है] (http://stackoverflow.com/q/18914668/432903) – prayagupd

1

प्रयास करें:

CacheManager.create().clearAll() 

यह CacheManager में सभी कैश साफ हो जाएगा।

केवल एक विशेष कैश को साफ़, कैश प्रबंधक से इसे पाने और सभी तत्वों को निकालने के लिए: यह अच्छी तरह से लेखन के समय काम किया है हो सकता है

CacheManager cacheManager = CacheManager.create(); 
Ehcache cache = cacheManager.getEhcache(cacheConfiguration.getName()); 
cache.removeAll();  
संबंधित मुद्दे