Ehcache Demo
转自:
https://my.oschina.net/zb0423/blog/60957
http://www.cnblogs.com/fsjin/articles/3521261.html
Ehcache 是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大。
- 下载jar包 ehcache-core-2.3.0.jar
- maven 仓库代理 https://repository.jboss.org/nexus/content/groups/developer/
- 新搭建一个Maven项目
- 配置jar包到pom文件中
- 编写ehcache.xml缓冲配置文件 可以放在src的任何目录下
pom文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lzyan.ehcache.demo</groupId>
<artifactId>EhcacheDemo</artifactId>
<version>v0.1</version>
<name>EhcacheDemo</name> <dependencies>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.6.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.6</version>
</dependency>
</dependencies> </project>
ehcache.xml文件:
<ehcache updateCheck="false" dynamicConfig="false">
<!-- Sets the path to the directory where cache .data files are created.
If the path is a Java System Property it is replaced by
its value in the running VM.
The following properties are translated:
user.home - User's home directory
user.dir - User's current working directory
java.io.tmpdir - Default temp file path -->
<diskStore path="D:/tmp/test/ehcache"/>
<cacheManagerEventListenerFactory class="" properties=""/>
<!--Default Cache configuration. These will applied to caches programmatically created through
the CacheManager.
The following attributes are required for defaultCache:
maxInMemory - Sets the maximum number of objects that will be created in memory
eternal - Sets whether elements are eternal. If eternal, timeouts are ignored and the element
is never expired.
timeToIdleSeconds - Sets the time to idle for an element before it expires. Is only used
if the element is not eternal. Idle time is now - last accessed time
timeToLiveSeconds - Sets the time to live for an element before it expires. Is only used
if the element is not eternal. TTL is now - creation time
overflowToDisk - Sets whether elements can overflow to disk when the in-memory cache
has reached the maxInMemory limit.
-->
<defaultCache
maxElementsInMemory="1000"
eternal="false"
timeToIdleSeconds="1200000"
timeToLiveSeconds="1200000"
overflowToDisk="true"
/>
<cache name="icache-global"
maxElementsInMemory="1000"
eternal="true"
timeToIdleSeconds="1800"
timeToLiveSeconds="1800"
overflowToDisk="true"
/>
<cache name="SimplePageCachingFilter"
maxElementsInMemory="10000"
maxElementsOnDisk="1000"
eternal="false"
overflowToDisk="true"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
memoryStoreEvictionPolicy="LFU"
/>
</ehcache>
编写测试类:
import java.net.URL;
import java.util.concurrent.TimeUnit; import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element; public class EhCache_v2 { public static void main(String[] args) throws Exception {
System.out.println("main(): begin ...");
ClassLoader loader = Thread.currentThread().getContextClassLoader();
URL url = loader.getResource("ehcache.xml");
//创建一个缓存管理器
CacheManager manager = CacheManager.create(url);
String names[] = manager.getCacheNames();
System.out.println("Available caches list: \n---------");
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
System.out.println("---------"); if(names.length > 0){
System.out.println("Selected_CacheName=" + names[0]);
}
Cache cache = manager.getCache(names[0]);
cache.put(new Element("name", "admin")); Element element = cache.get("name");
System.out.println("getValue()=" + element.getValue());
Object obj = element.getObjectValue();
System.out.println("getObjectValue()=" + obj); TimeUnit.SECONDS.sleep(3); ThreadAction action = new ThreadAction();
action.setCacheName(cache.getName());
action.setManager(manager);
action.start(); System.out.println("=== main thread is return! ===");
} } class ThreadAction extends Thread{
private String cacheName;
private CacheManager manager ; @Override
public void run() {
try {
Thread.sleep(3000);
Cache cache = manager.getCache(cacheName);
Element element = cache.get("name");
System.out.println("run(): 从缓存中取得数据:" + element.getObjectValue());
} catch (InterruptedException e) {
e.printStackTrace();
} } public CacheManager getManager() {
return manager;
}
public void setManager(CacheManager manager) {
this.manager = manager;
} public String getCacheName() {
return cacheName;
}
public void setCacheName(String cacheName) {
this.cacheName = cacheName;
} }
测试出缓存起作用:
需要设置配置文件中缓存名 name="SimplePageCachingFilter" 的存活时间
eternal="false"
timeToIdleSeconds="1"
timeToLiveSeconds="1"
不知道什么缓存管理器读取配置文件的规则,取出的 name[0] 是文件最后一个配置的缓存
然后再试运行 发现抛出空指针异常,说明从缓存中取不到数据了,说明这个测试可以测试出缓存是否起作用。
Demo2:
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element; public class EhCache { public static void main(String[] args) {
System.out.println("main(): begin ...");
// CacheManager manager = new CacheManager();
//创建一个缓存管理器
CacheManager singletonManager = CacheManager.create();
//建立一个缓存实例
Cache memoryOnlyCache = new Cache("testCache", 5000, false, false, 5, 2);
//在内存管理器中添加缓存实例
singletonManager.addCache(memoryOnlyCache);
Cache cache = singletonManager.getCache("testCache");
//使用缓存
Element element = new Element("key1", "value1");
cache.put(element);
cache.put(new Element("key1", "value2")); element = cache.get("key1");
Object value = element.getObjectValue();
System.out.println(value); int elementsInMemory = cache.getSize();
System.out.println(elementsInMemory); long elementsInMemory2 = cache.getMemoryStoreSize();
System.out.println(elementsInMemory2); Object obj = element.getObjectValue();
cache.remove("key1");
System.out.println(obj);
singletonManager.shutdown();
// manager.shutdown();
System.out.println("main(): over ...");
} }
Ehcache Demo的更多相关文章
- 【Java】:ehcache
ehcache是一个纯Java进程内缓存框架,是hibernate默认的Cacheprovider.(出自百度百科). 1. 快速2. 简单3. 多种缓存策略4. 缓存数据有两级:内存和磁盘,因此无需 ...
- Java SpringBoot使用Redis缓存和Ehcache
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http:// ...
- springboot+ehcache 基于注解实现简单缓存demo
1.加入maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...
- springmvc 多数据源 SSM java redis shiro ehcache 头像裁剪
获取下载地址 QQ 313596790 A 调用摄像头拍照,自定义裁剪编辑头像 B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单; 技术:31359679 ...
- (转)springMVC+mybatis+ehcache详细配置
一. Mybatis+Ehcache配置 为了提高MyBatis的性能,有时候我们需要加入缓存支持,目前用的比较多的缓存莫过于ehcache缓存了,ehcache性能强大,而且位各种应用都提供了解决方 ...
- spring缓存Ehcache(入门2)
使用Ehcache缓存工具类. 一.由于使用了maven,所以需要引入依赖包: <dependency> <groupId>net.sf.ehcache</groupId ...
- 缓存插件 EHCache
EHCache是来自sourceforge(http://ehcache.sourceforge.net/)的开源项目,也是纯Java实现的简单.快速的Cache组件. 下载jar包 Ehcache ...
- ehcache 分布式集群同步数据实例
本文使用rmi方式,借鉴百度能搜到的文章,但是均不能做到数据同步,做了些改动完全没问题,更详细说明介绍百度即可.直奔主题,可运行的demo实例! 创建一个maven项目,配置pom pom.xml & ...
- ehcache集群的配置
一:配置环境 本文是在测试demo的基础上写的,服务器包括申请的两台服务器和本机,共三台服务器.demo的目标是实现三台服务器之间共享cache. 申请的两台服务器地址分别是172.19.100.15 ...
随机推荐
- 用Myeclipse,包名上有小红叉(表示错误),但是包中的类都是没有错误的+struts2继承ActionSupport时package前面出错
使用Eclipse 进行项目开发,在实现类中的方法前面如果添加@Override就提示“Multiple markers at this line”的错误,问题描述如下 应该是JDK版本的问题, 右击 ...
- 懵逼的闭包--for循环(转)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MongoDB在Windows下安装、Shell客户端的使用、Bson扩充的数据类型、MongoVUE可视化工具安装和简单使用、Robomongo可视化工具(2)
一.Windows 下载安装 1.去http://www.mongodb.org/downloads下载,mongodb默认安装在C:\Program Files\MongoDB目录下,到F:\Off ...
- 【Java EE 学习 34】【struts2学习第一天】
一.struts2简介 struts2是一个用来开发MVC应用程序的框架.它提供了Web应用程序开发过程中的一些常见问题的解决方案. 1.struts2的作用域范围:三层架构当中的第一层,相当于MVC ...
- [BI项目记]-搭建代码管理环境之云端
这一篇主要介绍云端的TFS.微软在云端解决方案为我们提供了不错的选择,当本地的资源无法满足部署一个TFS的环境的时候,在互联网连接允许的情况下,可以考虑使用Visual Studio Online. ...
- UltraEdit 注册机使用说明
请断开网络连接(或直接拔掉网线)后执行: 安装完成后,点击弹出界面的“注册”按钮,然后直接点击“激活”,此时UltraEdit检测到网络断开则弹出界面提示“脱机激活”,此时启动注册机,并将UltraE ...
- Asp.net通过模板(.dot/Html)导出Word,同时导出图片
一.Office组件导出Word(服务器配置麻烦) 需要引用Office的DLL,在下文的附件中,不同的Offic版本用的不一样,虽然高级版本可以兼容低级的,不过,还是统一版本最好 贴上核心代码(转载 ...
- csc.rsp Nuget MVC/WebAPI、SignalR、Rx、Json、EntityFramework、OAuth、Spatial
# This file contains command-line options that the C# # command line compiler (CSC) will process as ...
- BZOJ 2115 [Wc2011] Xor ——线性基
[题目分析] 显然,一个路径走过两边是不需要计算的,所以我么找到一条1-n的路径,然后向该异或值不断异或简单环即可. 但是找出所有简单环是相当复杂的,我们只需要dfs一遍,找出所有的环路即可,因为所有 ...
- ZeroMQ接口函数之 :zmq_pgm – ØMQ 使用PGM 进行可靠的多路传输
ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ——————————————————————————————————— ...