测试于:JDK6+,ehcache3.x
EhCache是一个开放源码的,基于标准的高速缓存框架。
网上关于EhCache的使用配置很多,但是一般是基于配置文件的。但是实际应用中。我们可能需要动态的管理缓存,这时候单纯配置文件就不够用了。
所以我们需要编码形式的配置创建缓存。
其实EhCache是支持硬编码方式创建配置的(配置文件只是一种形式,最终也是需要解析成JAVA类模型的)。
使用JAVA代码创建配置。
Configuration configuration = new Configuration()// .diskStore(new DiskStoreConfiguration().path("java.io.tmpdir"))//临时文件目录 //指定除自身之外的网络群体中其他提供同步的主机列表,用“|”分开不同的主机 .cacheManagerPeerProviderFactory(new FactoryConfiguration<FactoryConfiguration<?>>()// .className(RMICacheManagerPeerProviderFactory.class.getName())// .properties("peerDiscovery=manual,rmiUrls=//localhost:40004/metaCache|//localhost:40005/metaCache")// )// //配宿主主机配置监听程序 .cacheManagerPeerListenerFactory(new FactoryConfiguration<FactoryConfiguration<?>>()// .className(RMICacheManagerPeerListenerFactory.class.getName())// .properties("port=40004,socketTimeoutMillis=2000")// )// .cache(new CacheConfiguration("metaCache", 10000)//缓存名称(必须唯一),maxElements内存最多可以存放的元素的数量 .memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LFU)//清理机制:LRU最近最少使用 FIFO先进先出 LFU较少使用 .timeToIdleSeconds(1000)//元素最大闲置时间 .timeToLiveSeconds(2000)//元素最大生存时间 .eternal(false)//元素是否永久缓存 .diskExpiryThreadIntervalSeconds(120)//缓存清理时间(默认120秒) //LOCALTEMPSWAP当缓存容量达到上限时,将缓存对象(包含堆和非堆中的)交换到磁盘中 //NONE当缓存容量达到上限时,将缓存对象(包含堆和非堆中的)交换到磁盘中 //DISTRIBUTED按照_terracotta标签配置的持久化方式执行。非分布式部署时,此选项不可用 .persistence(new PersistenceConfiguration().strategy(PersistenceConfiguration.Strategy.NONE)).maxEntriesLocalDisk(0)//磁盘中最大缓存对象数0表示无穷大) .cacheEventListenerFactory(new CacheConfiguration.CacheEventListenerFactoryConfiguration().className(RMICacheReplicatorFactory.class.getName()))// ); CacheManager manager = CacheManager.create(configuration); Cache cache = manager.getCache("metaCache");//获得缓存