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");
时间: 2024-12-22 09:35:18

ehcache入门的相关文章

Ehcache入门介绍一

EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. 特性有: 1. 快速轻量 Ehcache的线程机制是为大型高并发系统设计的. 大量性能测试用例保证Ehcache在不同版本间性能表现得一致性. 很多用户都不知道他们正在用Ehcache,因为不需要什么特别的配置.API易于使用,这就很容易部署上线和运行.很小的jar包,Ehcache 2.2.3才668kb. 2. 简单 3. 多种缓存策略 缓存在内存和磁盘存储可以伸

Java缓存组件 EhCache 入门教程

1.技术背景: 系统缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域,目的是为减少应用程序对物理数据源访问的次数,从而提高应用程序的运行性能.缓存设想内存是有限的,缓存的时效性也是有限的,所以可以设定内存数量的大小可以执行失效算法,可以在内存满了的情况下,按照最少访问等算法将缓存直接移除或切换到硬盘上. Ehcache从Hibernate发展而来,逐渐涵盖了Cache界的全部功能,是目前发展势头最好的一个项目,具有快速.简单.低消耗.扩展性强.支持对象或序列化缓存,支持缓存或元

Ehcache学习总结(1)--Ehcache入门介绍

Ehcache是现在最流行的纯Java开源缓存框架,配置简单.结构清晰.功能强大,最初知道它,是从hibernate的缓存开始的.网上中文的EhCache材料以简单介绍和配置方法居多,如果你有这方面的问题,请自行google:对于API,官网上介绍已经非常清楚,请参见官网:但是很少见到特性说明和对实现原理的分析,因此在这篇文章里面,我会详细介绍和分析EhCache的特性,加上一些自己的理解和思考,希望对缓存感兴趣的朋友有所收获. 一.特性一览,来自官网,简单翻译一下: 1.快速轻量 过去几年,诸

Ehcache入门经典:第二篇ehcache.xml的参数

继续第一篇 diskStorepath:指定在硬盘上存储对象的路径path属性可以配置的目录有: user.home(用户的家目录) user.dir(用户当前的工作目录) java.io.tmpdir(默认的临时目录) ehcache.disk.store.dir(ehcache的配置目录) 绝对路径(如:c:\\ehcache) <diskStore path="G:\\eclipse\\workspace8\\Ehcache\\src\\com\\ij34\\cache"

Mybatis入门实例(二)——添加ehcache缓存支持

为了提高MyBatis的性能,有时候我们需要加入缓存支持,目前用的比较多的缓存莫过于ehcache缓存了,ehcache性能强大,而且位各种应用都提供了解决方案,在此我们主要是做查询缓存,提高查询的效率. 在Mybatis的官网上把集成ehcache的文档下载下来看了看,说的太简单了,对于新手很难理解,而且里面说的也不是很清楚,经过一番折腾,终于将ehcache加入了. 官网上提供了一个MyBatis-ehcache.jar的包用于整合ehcache缓存,文档中还说明需要一个ehcache-co

spring缓存Ehcache(入门2)源码解读

Ehcache缓存: 解读: Ehcache缓存是在继承spring缓存核心类CacheManager的基础上实现的. 常用类: EhCacheCacheManager:继承自CacheManager类(org.springframework.cache.CacheManager)负责管理Cache对象. EhCacheManagerFactoryBean:是个工厂类,根据配置文件中设置的参数(配置文件会被注入工厂类对象中),新建Ehcache的CacheManager对象,其可以通过属性con

SpringBoot入门六,添加ehcache缓存

1.pom.xml文件添加引用包 <!-- 开启cache缓存支持 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <!-- 引入ehcache支持 --> <dependency> <gro

ehcache2.8.3入门示例:hello world

一.pom.xml 依赖项 1 <dependency> 2 <groupId>net.sf.ehcache</groupId> 3 <artifactId>ehcache</artifactId> 4 <version>2.8.3</version> 5 </dependency> 6 7 <dependency> 8 <groupId>org.slf4j</groupId>

JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro授权

shiro介绍 什么是shiro shiro是Apache的一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架.它可以实现如下的功能: 1.验证用户 2.对用户执行访问控制,如:判断用户是否具有角色admin,判断用户是否拥有访问的资源权限. 3.在任何环境下使用SessionAPI.例如C/S程序 4.可以使用多个用户数据源.例如一个是Oracle数据库,另外一个是MySQL数据库. 5.单点登录(SSO)功能