加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ehcache.xml配置文件详解

发布时间:2020-12-16 02:20:59 所属栏目:百科 来源:网络整理
导读:1.ehcache.xml配置文件详解 ehcache !--磁盘存储配置:用来指定缓存在磁盘上的存储位置。 可以使用JavaVM环境变量(user.home,user.dir,java.io.tmpdir)-- diskStore path = "c:/cache/" / !--指定CacheManagerEventListenerFactory,这个对象在缓存添加的时候
1.ehcache.xml配置文件详解 <ehcache> <!--磁盘存储配置:用来指定缓存在磁盘上的存储位置。 可以使用JavaVM环境变量(user.home,user.dir,java.io.tmpdir)--> <diskStore path = "c:/cache/" /> <!--指定CacheManagerEventListenerFactory,这个对象在缓存添加的时候会得到相应的通知。 CacheManagerEventListenerFactory的属性: *class :CacheManagerEventListenerFactory的一个实现类。 *properties :CacheManagerEventListenerFactory的属性值,以逗号(,)分割多个属性。 如果没有实现类被指定,则系统不创建CacheManager的监听器,没有默认值--> <cacheManagerEventListenerFactory class="" properties="" /> <!--在进行分布式缓存的应用时需要指定CacheManagerPeerProviderFactory,用来生成CacheManagerPeerProvider的实例,以便和集群中的其他CacheManager通信。 CacheManagerPeerProvider的属性: *class :CacheManagerPeerProviderFactory的一个实现类。 *properties :CacheManagerPeerProviderFactory的属性值,以逗号(,)分割多个属性。 Ehcache内建了2种基于RMI分布系统的通信策略: *automatic :使用多播组。在一个节点加入或者推出集群的时候自动感应。 *manual :硬编码方式 --> <cacheManagerPeerListenerFactory class="" properties="" /> <!--默认缓存配置,以下属性是必须的: name :cache的标识符,在一个CacheManager中必须唯一。 maxElementsInMemory : 在内存中缓存的element的最大数目。 maxElementsOnDisk : 在磁盘上缓存的element的最大数目。 eternal : 设定缓存的elements是否有有效期。如果为true,timeouts属性被忽略。 overflowToDisk : 设定当内存缓存溢出的时候是否将过期的element缓存到磁盘上。 以下属性是可选的: timeToIdleSeconds : 缓存element在过期前的空闲时间。 timeToLiveSeconds : 缓存element的有效生命期。 diskPersistent : 在VM重启的时候是否持久化磁盘缓存,默认是false。 diskExpiryThreadIntervalSeconds : 磁盘缓存的清理线程运行间隔,默认是120秒. memoryStoreEvictionPolicy : 当内存缓存达到最大,有新的element加入的时候, 移除缓存中element的策略。默认是LRU,可选的有LFU和FIFO 缓存子元素: cacheEventListenerFactory:注册相应的的缓存监听类,用于处理缓存事件,如put,remove,update,和expire bootstrapCacheLoaderFactory:指定相应的BootstrapCacheLoader,用于在初始化缓存,以及自动设置。 --> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" maxElementsOnDisk="1000000" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" /> <!--cache配置同defaultCache --> <cache name="test" maxElementsInMemory="100" eternal="false" timeToIdleSeconds="100" timeToLiveSeconds="100" overflowToDisk="false" /> </ehcache> 2.ehcache 包可用方法介绍: 创建CacheManager 的方法: 方法一: CacheManager manager = new CacheManager(); 方法二: CacheManager manager = new CacheManager("src/config/ehcache.xml"); 方法三: URL url = getClass().getResource("/anotherconfigurationname.xml"); CacheManager manager = new CacheManager(url); 方法四: InputStream fis = new FileInputStream(new File("src/config/ehcache.xml").getAbsolutePath()); try { CacheManager manager = new CacheManager(fis); } finally { fis.close(); } 获取cacheNames 列表: 方法一: CacheManager.create(); String[] cacheNames = CacheManager.getInstance().getCacheNames(); 方法二: CacheManager manager = new CacheManager(); String[] cacheNames = manager.getCacheNames(); 方法三: CacheManager manager1 = new CacheManager("src/config/ehcache1.xml"); CacheManager manager2 = new CacheManager("src/config/ehcache2.xml"); String[] cacheNamesForManager1 = manager1.getCacheNames(); String[] cacheNamesForManager2 = manager2.getCacheNames(); 添加和删除缓存元素: 设置一个名为testCache 的新cache,属性为默认: CacheManager singletonManager = CacheManager.create(); singletonManager.addCache("testCache"); Cache test = singletonManager.getCache("testCache"); 设置一个名为testCache 的新cache,并定义其属性: CacheManager singletonManager = CacheManager.create(); Cache memoryOnlyCache = new Cache("testCache",5000,false,5,2); singletonManager.addCache(memoryOnlyCache); Cache test = singletonManager.getCache("testCache"); Cache 属性说明: 构造函数: public Cache(String name,int maxElementsInMemory,boolean overflowToDisk,boolean eternal,long timeToLiveSeconds,long timeToIdleSeconds) 参数说明: name :元素名字。 maxElementsInMemory :设定内存中创建对象的最大值。 overflowToDisk : 设置当内存中缓存达到 maxInMemory 限制时元素是否可写到磁盘上。 eternal : 设置元素是否永久驻留。 timeToIdleSeconds : 设置某个元素消亡前的停顿时间。也就是在一个元素消亡之前,两次访问时间的最大时间间隔值。只能在元素不是永久驻留时有效。 timeToLiveSeconds : 设置某个元素消亡前的生存时间。也就是一个元素从构建到消亡的最大时间间隔值。只能在元素不是永久驻留时有效。 删除缓存元素: CacheManager singletonManager = CacheManager.create(); singletonManager.removeCache("testCache"); 关闭缓存管理器 CacheManager CacheManager.getInstance().shutdown(); 对于缓存对象的操作: 放入一个简单的对象到缓存元素; Cache cache = manager.getCache("testCache"); Element element = new Element("key1","value1"); cache.put(element); 得到一个序列化后的对象属性值; Cache cache = manager.getCache("testCache"); Element element = cache.get("key1"); Serializable value = element.getValue(); 得到一个没有序列化后的对象属性值; Cache cache = manager.getCache("testCache"); Element element = cache.get("key1"); Object value = element.getObjectValue(); 删除一个对象从元素; Cache cache = manager.getCache("testCache"); Element element = new Element("key1","value1"); cache.remove("key1"); 对于永固性磁盘存储,立即存储到磁盘: Cache cache = manager.getCache("testCache"); cache.flush(); 获得缓存大小: 得到缓存的对象数量; Cache cache = manager.getCache("testCache"); int elementsInMemory = cache.getSize(); 得到缓存对象占用内存的数量 Cache cache = manager.getCache("testCache"); long elementsInMemory = cache.getMemoryStoreSize(); 得到缓存对对象占用磁盘的数量 Cache cache = manager.getCache("testCache"); long elementsInMemory = cache.getDiskStoreSize(); 关于缓存的读取和丢失的记录: 得到缓存读取的命中次数; Cache cache = manager.getCache("testCache"); int hits = cache.getHitCount(); 得到内存中缓存读取的命中次数; Cache cache = manager.getCache("testCache"); int hits = cache.getMemoryStoreHitCount(); 得到磁盘中缓存读取的命中次数; Cache cache = manager.getCache("testCache"); int hits = cache.getDiskStoreCount(); 得到缓存读取的丢失次数; Cache cache = manager.getCache("testCache"); int hits = cache.getMissCountNotFound(); 得到缓存读取的已经被销毁的对象丢失次数; Cache cache = manager.getCache("testCache"); int hits = cache.getMissCountExpired();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读