文章转载自: https://blog.csdn.net/zhouzhiwengang/article/details/59838105

1.ehcahce简介 
在开发高并发量,高性能的网站应用系统时,缓存Cache起到了非常重要的作用。 
EHCache是来自sourceforge(http://ehcache.sourceforge.net/)的开源项目,也是纯Java实现的简单、快速的Cache组件。EHCache支持内存和磁盘的缓存,支持LRU、LFU和FIFO多种淘汰算法,支持分布式的Cache,可以作为Hibernate的缓存插件,是Hibernate中默认的CacheProvider。同时它也能提供基于Filter的Cache,该Filter可以缓存响应的内容并采用Gzip压缩提高响应速度。

Ehcache缓存的特点: 
1. 快速. 
2. 简单. 
3. 多种缓存策略 
4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题 
5. 缓存数据会在虚拟机重启的过程中写入磁盘 
6. 可以通过RMI、可插入API等方式进行分布式缓存 
7. 具有缓存和缓存管理器的侦听接口 
8. 支持多缓存管理器实例,以及一个实例的多个缓存区域 
9. 提供Hibernate的缓存实现

2.Ehcache缓存- 解读Ehcache配置文件ehcache.xml 
缓存的配置有很多选项,主要集中在ehcache.xml里。比如缓存的名称,监听器等。Ehcache提供了默认的配置文件。同时可以自己指定缓存,比如

<diskStore path="D:/work2/renhewww/cache"/>   
<cache name=" sampleCache1"   
      maxElementsInMemory="1"   
           maxElementsOnDisk="10000"   
           eternal="false"   
           overflowToDisk="true"   
           diskSpoolBufferSizeMB="20"   
           diskPersistent="true"   
           timeToIdleSeconds="43200"   
           timeToLiveSeconds="86400"   
           memoryStoreEvictionPolicy="LFU"   
        />   

各配置参数的含义: 
name:Cache的唯一标识 
maxElementsInMemory:缓存中允许创建的最大对象数 
eternal:缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期。 
timeToIdleSeconds:缓存数据的钝化时间,也就是在一个元素消亡之前,两次访问时间的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是 0 就意味着元素可以停顿无穷长的时间。 
timeToLiveSeconds:缓存数据的生存时间,也就是一个元素从构建到消亡的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是0就意味着元素可以停顿无穷长的时间。 
overflowToDisk:内存不足时,是否启用磁盘缓存。 
memoryStoreEvictionPolicy:缓存满了之后的淘汰算法。LRU和FIFO算法这里就不做介绍。LFU算法直接淘汰使用比较少的对象,在内存保留的都是一些经常访问的对象。对于大部分网站项目,该算法比较适用。 
如果应用需要配置多个不同命名并采用不同参数的Cache,可以相应修改配置文件,增加需要的Cache配置即可。

3.Ehcache缓存的使用 
3.1 安装ehcache 
Ehcache 的特点,是一个纯Java ,过程中(也可以理解成插入式)缓存实现,单独安装Ehcache ,需把ehcache-X.X.jar 和相关类库方到classpath中。如项目已安装了Hibernate ,则不需要做什么,直接可以使用Ehcache 。

如果使用maven,可以在pom.xml里配置:

<dependency>  
          <groupId>net.sf.ehcache</groupId>  
          <artifactId>ehcache</artifactId>  
          <version>2.9.0</version>  
</dependency>  

3.2 生成CacheManager 
使用CacheManager 创建并管理Cache大概步骤为: 
第一步:生成CacheManager对象 
第二步:生成Cache对象 
第三步:向Cache对象里添加由key,value组成的键值对的Element元素 
第四步:关闭CacheManager。

1.创建CacheManager有4种方式: 
方式一:使用默认配置文件创建 
Ehcache有默认的配置文件ehcache.xml,里面有默认的配置和一个默认的缓存。

CacheManager manager = CacheManager.create();    

方式二:使用指定配置文件创建

CacheManager manager =CacheManager.create("src/config/ehcache.xml"); 

方式三:从classpath中找寻配置文件并创建

URL url = getClass().getResource("/anothername.xml");
CacheManager manager = CacheManager.create(url);

方式四:通过输入流创建

InputStream fis = new FileInputStream(new File("src/config/ehcache.xml").getAbsolutePath());    
  
try  
{    
    manager = CacheManager.create(fis);    
}   
finally  
{    
    if (fis != null)  
    {  
        fis.close();  
    }  
}  

// 使用manager移除指定名称的Cache对象

manager.removeCache("demoCache");  

可以通过调用manager.removalAll()来移除所有的Cache。

2 创建Cache 
通过CacheManager创建Cache:

Cache cache = manager.getCache("sampleCache1");  

3 利用cache存取数据 
存储数据

Element element = new Element("key1", "value1");
cache.put(new Element(element);

获取数据

Element element = cache.get("key1"); 

//从Cache中移除一个元素

cache.remove("key");   

注意:可以直接使用上面的API进行数据对象的缓存,这里需要注意的是对于缓存的对象都是必须可序列化的。

4.缓存的关闭

manager.shutdown();    

3.3 实例

import net.sf.ehcache.Cache;  
import net.sf.ehcache.CacheManager;  
import net.sf.ehcache.Element;  
  
public class Ehcache  
{  
    public static void main(String[] args)  
    {  
        CacheManager manager = CacheManager.create("src/main/resources/conf/ehcache.xml");  
        Cache cache = manager.getCache("sampleCache1");  
        Element element = new Element("key","value");  
        cache.put(element);  
          
        System.out.println(cache.get("key"));  
          
        manager.shutdown();  

输出: 
[ key = key, value=value, version=1, hitCount=1, CreationTime = 1414933551601, LastAccessTime = 1414933551601 ]

更多资料:https://blog.csdn.net/vbirdbest/article/details/72763048

ehcache 简介和基本api使用的更多相关文章

  1. Ehcache(2.9.x) - API Developer Guide, Key Classes and Methods

    About the Key Classes Ehcache consists of a CacheManager, which manages logical data sets represente ...

  2. Ehcache(2.9.x) - API Developer Guide, Basic Caching

    Creating a CacheManager All usages of the Ehcache API start with the creation of a CacheManager. The ...

  3. Ehcache(2.9.x) - API Developer Guide, Searching a Cache

    About Searching The Search API allows you to execute arbitrarily complex queries against caches. The ...

  4. Ehcache(2.9.x) - API Developer Guide, Using Explicit Locking

    About Explicit Locking Ehcache contains an implementation which provides for explicit locking, using ...

  5. Ehcache(2.9.x) - API Developer Guide, Transaction Support

    About Transaction Support Transactions are supported in versions of Ehcache 2.0 and higher. The 2.3. ...

  6. Ehcache(2.9.x) - API Developer Guide, Write-Through and Write-Behind Caches

    About Write-Through and Write-Behind Caches Write-through caching is a caching pattern where writes ...

  7. Ehcache(2.9.x) - API Developer Guide, Cache Eviction Algorithms

    About Cache Eviction Algorithms A cache eviction algorithm is a way of deciding which element to evi ...

  8. web API简介(一):API,Ajax和Fetch

    概述 今天逛MDN,无意中看到了web API简介,觉得挺有意思的,就认真读了一下. 下面是我在读的时候对感兴趣的东西的总结,供自己开发时参考,相信对其他人也有用. 什么是API API (Appli ...

  9. java.net.URI 简介 文档 API

    URI 简介 文档地址:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh public final class java.net.URI extend ...

随机推荐

  1. 微信JS-SDK说明文档【申明:来源于网络】

    微信JS-SDK说明文档[申明:来源于网络] 地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html

  2. Codeforces 1089E - Easy Chess - [DFS+特判][2018-2019 ICPC, NEERC, Northern Eurasia Finals Problem E]

    题目链接:https://codeforces.com/contest/1089/problem/E Elma is learning chess figures. She learned that ...

  3. 部署WEB项目到服务器(四)部署WEB项目Forum到linux服务器(Ubuntu)详解

    突发奇想,想在自己电脑上部署一个web网站. 1,使用Navicat for MYSQL客户端创建WEB项目数据库: Navicat for MYSQL连接虚拟机中的mysql数据库 启动mysql数 ...

  4. 43-3-STM32的CAN外设

    1.STM32 的芯片中具有 bxCAN 控制器 (Basic Extended CAN), 它支持 CAN 协议 2.0A 和2.0B 标准. 2.外设中具有 3 个发送邮箱,发送报文的优先级可以使 ...

  5. java之动态代理

    摘要 相比于静态代理,动态代理避免了开发人员编写各个繁锁的静态代理类,只需简单地指定一组接口及目标类对象就能动态的获得代理对象. 这里说的静态代理可以理解为之前使用的装饰者模式,从之前使用装饰者模式实 ...

  6. 【UML】NO.50.EBook.5.UML.1.010-【UML 大战需求分析】- 考勤系统

    1.0.0 Summary Tittle:[UML]NO.50.EBook.1.UML.1.010-[UML 大战需求分析]- 考勤系统 Style:DesignPattern Series:Desi ...

  7. spring-boot 速成(2) devtools之热部署及LiveReload

    JRebel热部署插件相信很多人都知道,但是这是一款商业插件,spring-boot框架也提供了类似的功能,即:devtools,关键是免费的! 使用方法如下: 一.添加 devtools依赖 dep ...

  8. This Debug perspective is designed to support application debugging.it incorporates views for displaying the debug stack,variables and breakpoint mamagement

    使用IDE(Eclipse Version:Neon.2 Release (4.6.2)),出现以下提示信息: This kind of launch is configured to openthe ...

  9. word之选中文本

    在word和notepad中: 特别是在文件很大,如果用鼠标下滑的话,不知道会滑多久呢, 快捷键+鼠标点击截至处

  10. MySQL 5.6 (Win7 64位)下载、安装与配置图文教程

    一. 工具 Win7 64位操作系统 二. 步骤 第一步:下载安装包 下载 地址:http://www.mysql.com/ 截止到目前(2016/7/24) ,官网的最新版本是5.7.13,不过自己 ...