ehcache入门

简介: 一、简介   ehcache是一个开源的,纯java进程内的缓存框架。它具有快速,简单,具有多种缓存策略等特点。 Hibernate中默认就是用了ehcache。在我们的应用中使用ehcache可以快速地提高应用的性能。

一、简介

  ehcache是一个开源的,纯java进程内的缓存框架。它具有快速,简单,具有多种缓存策略等特点。 Hibernate中默认就是用了ehcache。在我们的应用中使用ehcache可以快速地提高应用的性能。ehcache主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api。

二、实例

  ehcache下载地址为:http://www.ehcache.org/downloads/catalog 。一般我们使用ehcahe会使用配置文件进行缓存配置。先创建ehcache.xml文件,在该文件定义我们使用的cache名称,大小,调度算法等相关缓存配置。并将该文件存放在系统路径的src目录下。ehcache.xml文件内容如下:  

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
 4     updateCheck="false">
 5 
 6     <!-- 默认缓存配置 ,缓存名称为 default -->
 7     <defaultCache maxElementsInMemory="50" eternal="false"
 8         overflowToDisk="false" memoryStoreEvictionPolicy="LFU" />
 9     <!-- 自定义缓存,名称为lt.ehcache -->
10     <cache name="lt.ecache" maxElementsInMemory="50" eternal="false"
11         overflowToDisk="false" memoryStoreEvictionPolicy="LFU" />
12 </ehcache>  

  name缓存的名称,必须唯一;overflowToDisk表示内存放满之后缓是否保存到硬盘上;memoryStoreEvictionPolicy 表示页面调度算法;eternal表示缓存是否过期;timeToIdleSeconds表示对象在多长时间没有被访问就会失效; timeToLiveSeconds表示对象存活时间,指对象从创建到失效所需要的时间。 maxElementsInMemory表示缓存元素的个数;maxElementsOnDisk表示在磁盘上缓存的element的最大数目,默认值为0,表示不限制。

  调用代码如下:

 1 package com.ehcache.simple;
 2 
 3 import java.util.List;
 4 
 5 import net.sf.ehcache.Cache;
 6 import net.sf.ehcache.CacheManager;
 7 import net.sf.ehcache.Element;
 8 import net.sf.ehcache.config.CacheConfiguration;
 9 import net.sf.ehcache.config.Configuration;
10 import net.sf.ehcache.store.MemoryStoreEvictionPolicy;
11 
12 public class SimpleTest {
13     public static void main(String[] args) {
14         // InputStream in = SimpleTest.class.getClassLoader().getResourceAsStream("ehcache.xml");
15         // URL url = SimpleTest.class.getClassLoader().getResource("ehcache.xml");
16         // URL url2 = SimpleTest.class.getResource("ehcache.xml");  
17         String path = System.getProperty("ehcache.xml");  
18         CacheManager manager = CacheManager.create(path); 
19             
20         //创建Cache对象
21         Cache cache = manager.getCache("lt.ecache");
22 
23         //cache缓存名称
24         System.out.println("cache name: " + cache.getName());
25         
26         //将对象放入缓存    
27         Element element = new Element("hello", "world");
28         Element element2 = new Element("aaa", "111");
29         Element element3 = new Element("bbb", "222");
30         Element element4 = new Element("bbb", "222");
31         cache.put(element);
32         cache.put(element2);
33         cache.put(element3);
34         cache.put(element4);//key相同时会被覆盖
35         
36         //cache缓存对象个数
37         System.out.println("size: " + cache.getSize());
38         
39         // 从cache中取回元素
40         System.out.println("hello: " + cache.get("hello").getValue());
41         
42         List<String> keys = cache.getKeys();//所有缓存对象的key
43         
44         // 遍历所有缓存对象
45         for(String key : keys ){
46             System.out.println(key + " : " + cache.get(key));
47         }
48         
49         // 从Cache中移除一个元素
50         System.out.println(cache.remove("hello")); 
51         System.out.println(cache.remove("hello2")); 
52         
53         //移除所有缓存对象
54         cache.removeAll();
55         
56         System.out.println("size: " + cache.getSize());
57         
58         manager.shutdown();
59     }
60 
61 }

  ehcache.xml在系统下,通过加载ehcache.xml创建缓存对象。运行结果如下:

  除了使用配置文件创建Cache对象之外,我们也可以通过代码的方式创建。相关代码如下:

 1         CacheConfiguration cacheConfig = new CacheConfiguration("lt.ecache", 50)
 2                 .memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LFU) // 设置调度算法
 3                 .overflowToDisk(true) // 设置是否缓存到硬盘
 4                 .eternal(false) // 设置是否过期
 5                 .timeToLiveSeconds(60) // 对象存活时间
 6                 .timeToIdleSeconds(30) // 调度设置最大不活动时间
 7                 .diskPersistent(false) // 是否在磁盘上持久化。指重启jvm后,数据是否有效。默认为false。
 8                 .diskExpiryThreadIntervalSeconds(0);// 设置对象检测线程运行时间间隔
 9         Configuration config = new Configuration();
10         config.addCache(cacheConfig);
11         CacheManager manager = CacheManager.create(config);
12 
13         // 创建Cache对象
14         Cache cache = manager.getCache("lt.ecache");
目录
相关文章
|
缓存 NoSQL Java
SpringBoot-26-缓存Ehcache的使用
spring缓存(cache)是在Spring3.1开始引入的,但是其本身只提供了缓存接口,不提供具体缓存的实现,其实现需要第三方缓存实现(Generic、EhCache、Redis等)。EhCache、Redis比较常用,使用Redis的时候需要先安装Redis服务器。
97 0
|
XML 缓存 Java
|
存储 缓存 NoSQL
【笔记06】Ehcache 缓存框架的使用
Ehcache 是一个纯 Java 的缓存框架。具有快速、精干等特点,是 Hibernate(一个持久层框架,类似 MyBatis) 中默认的 CacheProvider
199 0
|
存储 缓存 NoSQL
EhCache-介绍和基本使用
EhCache-介绍和基本使用
|
缓存 NoSQL Java
ehcache介绍
ehcache介绍
142 0
|
存储 缓存 NoSQL
SpringBoot整合Ehcache缓存(二十二)
一.Ehcache 二. SpringBoot 整合 Ehcache 缓存 二.一 添加 ehcache依赖 二.二 配置 ehcache.xml 文件 二.三 application.yml 指定 ehcache缓存配置文件位置 二.四 启动类添加 @EnableCaching 缓存 二.五 Spring Cache 注解与 Ehcache的使用
528 0
|
存储 SQL 缓存
Spring Boot 2.x基础教程:EhCache缓存的使用
Spring Boot 2.x基础教程:EhCache缓存的使用
125 0
|
缓存 Java 数据库连接
|
缓存 Java 数据库连接
|
缓存 NoSQL Java
玩转EhCache之最简单的缓存框架
一、简介 Ehcache是一个用Java实现的使用简单,高速,实现线程安全的缓存管理类库,ehcache提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的cache管理方案。
1652 0