文档章节

Ehcache 的配置(不使用配置文件)

G
 Galanodel
发布于 2017/05/05 09:35
字数 641
阅读 8
收藏 0

EhCache是一个开放源码的,基于标准的高速缓存系统。

网上关于EhCache的使用配置很多,但是一般是基于配置文件的。但是实际应用中。我们可能需要动态的管理缓存,这时候单纯配置文件就不够用了。

所以我们需要编码形式的配置创建缓存。

其实EhCache是支持硬编码方式创建配置的(配置文件只是一种形式,最终也是需要解析成JAVA类模型的)。

这里可以比较一下两种创建EhCache缓存方式的差异。


第一种方式,不使用配置文件,使用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");//获得缓存

 

第二种方式,使用配置文件。(这种方式网上资料很多,下面例子主要是与上面的例子做对比)

ehache.xml

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="true" monitoring="autodetect" dynamicConfig="true">
	<diskStore path="java.io.tmpdir" />
	<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" properties="peerDiscovery=manual,rmiUrls=//localhost:40004/metaCache|//localhost:40005/metaCache" />
	<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" properties="port=40004,socketTimeoutMillis=2000" />
	<defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000" diskPersistent="false" diskExpiryThreadIntervalSeconds="120"
		memoryStoreEvictionPolicy="LRU">
	</defaultCache>
	<cache name="metaCache" maxElementsInMemory="1000" eternal="false" timeToIdleSeconds="2000" timeToLiveSeconds="1000" overflowToDisk="false">
		<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" />
	</cache>
</ehcache>

 

使用缓存

URL url = getClass().getResource("ehache.xml");
CacheManager manager = new CacheManager(url);
Cache cache = manager.getCache("metaCache");//获得缓存

 

© 著作权归作者所有

G
粉丝 2
博文 72
码字总数 49356
作品 0
海淀
高级程序员
私信 提问
在 JPA、Hibernate 和 Spring 中配置 Ehcache 缓存

该贴详细介绍在一起使用 jpa, hibernate 和 spring 时配置 ehcache 二级缓存的步骤。 缓存配置 首先在 persistence.xml 配置文件中添加下面内容: EHCache 还需要一些独立的配置,你需要在类...

鉴客
2011/11/10
5.3K
2
【MyBatis框架】查询缓存-二级缓存-整合ehcache

mybatis整合ehcache ehcache是一个分布式缓存框架。 1.分布缓存 我们系统为了提高系统并发,性能、一般对系统进行分布式部署(集群部署方式) 如图 不使用分布缓存,缓存的数据在各各服务单独...

Mysoft
2015/09/21
36
0
Spring mvc +Mybstis 整合 集成cache+shiro+通用mapper

Spring mvc+Mybatis的整合 pom文件的配置 applicationContext.xml配置 通用mapper与分页插件配置 cache配置 spring-mvc.xml的配置 applicationContext-shiro.xml配置 properties文件 集成 测...

Sorata
2016/09/29
270
1
spring + ehcache + mybatis缓存控制,使用注解没有起到作用。

以上是引入两个jar包 我在方法上使用@Cacheable注解和不使用注解,效果是一样的。都有缓存查询结果。 比如我第一次查询一个id为2的 第二次 使不使用都是这个结果。 mybatis mapper中我就增加...

Kylin_Shaw
2016/07/04
988
3
mybatis学习笔记(16)-mybatis整合ehcache

mybatis学习笔记(16)-mybatis整合ehcache 标签: mybatis [TOC] ehcache是一个分布式缓存框架 分布缓存 我们系统为了提高系统并发,性能、一般对系统进行分布式部署(集群部署方式) 不使用分...

brianway
2016/03/03
130
0

没有更多内容

加载失败,请刷新页面

加载更多

二进制位操作

单片机,或者一些模块的设置操作,都是由一个字节数据来完成,每位各有定义。就需进行位操作来组合需要的数字结果。 以JavaScript为例,编写位操作。 我们期望得到这样一个二进制数:0101101...

format
25分钟前
2
0
聊聊中国的通信行业:从“七国八制”到“中华”脊梁

本期文章和大家一起来聊一聊我曾经从事过的通信行业吧。最近各方面信息的泛滥,包括和华为的同学聊天,自己确实也感慨颇多。想想我自己本科主修通信工程,研究生再修信息与通信工程,从本科开...

CodeSheep
今天
6
0
MDK:ARM M451M:exceed the range of code meory, continue to erase or not?

问题: 代码空间超限 几天前就遇到:exceed the range of code meory, continue to erase or not? 如下所示: 解决过程 开始以为中MDK软件的128KB限制,如是就不能生成HEX文件,应该链接时有提...

SamXIAO
今天
1
1
OSChina 周六乱弹 —— 因违反《中华人民共和国治安管理处罚法》第四十四条之规定

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @xiaoshiyue :#今日歌曲推荐# 惊艳分享谷微的单曲《安守本份》(@网易云音乐) 《安守本份》- 谷微 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
今天
533
12
Angular 英雄编辑器

应用程序现在有了基本的标题。 接下来你要创建一个新的组件来显示英雄信息并且把这个组件放到应用程序的外壳里去。 创建英雄组件 使用 Angular CLI 创建一个名为 heroes 的新组件。 ng gener...

honeymoose
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部