Java的进程内缓存框架:EhCache (转)

EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。

Ehcache缓存的特点:

1. 快速.

2. 简单.

3. 多种缓存策略

4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题

5. 缓存数据会在虚拟机重启的过程中写入磁盘

6. 可以通过RMI、可插入API等方式进行分布式缓存

7. 具有缓存和缓存管理器的侦听接口

8. 支持多缓存管理器实例,以及一个实例的多个缓存区域

9. 提供Hibernate的缓存实现

Ehcache缓存的使用(1) – 安装ehcache

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

Ehcache缓存的使用(2) - 生成CacheManager

使用CacheManager 创建并管理Cache

1.创建CacheManager有4种方式:

A:使用默认配置文件创建

Java代码

1.CacheManager manager = CacheManager.create();

B:使用指定配置文件创建

Java代码

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

C:从classpath中找寻配置文件并创建

Java代码

1.URL url = getClass().getResource("/anothername.xml");

2.CacheManager manager = CacheManager.create(url);

D:通过输入流创建

Java代码

1.InputStream fis = new FileInputStream(new File("src/config/ehcache.xml").getAbsolutePath());

2.try {

3.manager = CacheManager.create(fis);

4.} finally {

5.fis.close();

6.}

Ehcache缓存的使用(3) – 解读Ehcache配置文件ehcache.xml

重要的参数

<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:设置缓存的名称,用于标志缓存,惟一

maxElementsInMemory:在内存中最大的对象数量

maxElementsOnDisk:在DiskStore中的最大对象数量,如为0,则没有限制

eternal:设置元素是否永久的,如果为永久,则timeout忽略

overflowToDisk:是否当memory中的数量达到限制后,保存到Disk

可选的属性:

timeToIdleSeconds:设置元素过期前的空闲时间

timeToLiveSeconds:设置元素过期前的活动时间

diskPersistent:是否disk store在虚拟机启动时持久化。默认为false

diskExpiryThreadIntervalSeconds:运行disk终结线程的时间,默认为120秒

memoryStoreEvictionPolicy:策略关于Eviction

缓存子元素:

cacheEventListenerFactory:注册相应的的缓存监听类,用于处理缓存事件,如put,remove,update,和expire

bootstrapCacheLoaderFactory:指定相应的BootstrapCacheLoader,用于在初始化缓存,以及自动设置。

Ehcache缓存的使用(4) – 创建Cache

通过CacheManager创建Cache

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

Ehcache缓存的使用(5) – 利用cache存取数据

存储数据

Element element = new Element("key1", "value1");

cache.put(new Element(element);

获取数据

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

缓存的创建,采用自动的方式

CacheManager singletonManager = CacheManager.create();

singletonManager.addCache("testCache");

Cache test = singletonManager.getCache("testCache");

或者直接创建Cache

CacheManager singletonManager = CacheManager.create();

Cache memoryOnlyCache = new Cache("testCache", 5000, false, false, 5, 2);

manager.addCache(memoryOnlyCache);

Cache test = singletonManager.getCache("testCache");

删除cache

CacheManager singletonManager = CacheManager.create();

singletonManager.removeCache("sampleCache1");

在使用ehcache后,需要关闭

CacheManager.getInstance().shutdown()

caches 的使用

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

执行crud操作

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

Element element = new Element("key1", "value1");

cache.put(element);

//update

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

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

//This updates the entry for "key1"

cache.put(new Element("key1", "value2");

//get Serializable

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

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

Serializable value = element.getValue();

//get non serializable

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

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

Object value = element.getObjectValue();

//remove

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

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

http://www.cnblogs.com/hubcarl/p/3257774.html

时间: 2024-08-08 09:36:43

Java的进程内缓存框架:EhCache (转)的相关文章

Java的进程内缓存框架:EhCache

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

程序员修神之路--高并发下为什么更喜欢进程内缓存

菜菜哥,告诉你一个好消息 YY妹子,什么好消息,你有男票了? 不是啦,我做的一个网站,以前经常由于访问量太大而崩溃,现在我加上了缓存,很稳定啦 加的什么缓存呢? 我用的redis,号称业界最快的缓存组件了 你觉得现在的缓存操作应该是最快的了吗? 是的,我觉得没有缓存能比这种模式更快了 你先停停,我给你先讲个故事 进程内缓存是指缓存和应用程序在相同地址空间.即同一个进程内.分布式缓存是指缓存和应用程序位于不同进程的缓存,通常部署在不同服务器上. 从前有个机构,机构的主人叫做 CPU,这个机构专门派

Java 开源分布式缓存框架Ehcache

Ehcache 是一个Java实现的开源分布式缓存框架,EhCache 可以有效地减轻数据库的负载,可以让数据保存在不同服务器的内存中,在需要数据的时候可以快速存取.同时EhCache 扩展非常简单,官方提供的Cache配置方式有好几种.你可以通过声明配置.在xml中配置.在程序里配置或者调用构造方法时传入不同的参数. 以下是EhCache 的架构图: Ehcache有以下特点: 存取速度非常快,性能很不错. 可以应用多种缓存策略. 分级缓存,用户可以指定哪些数据在硬盘中缓存,哪些数据在内存中缓

Java进程内缓存

今天和同事聊到了缓存,在Java中实现进程缓存.这里主要思想是,用一个map做缓存.缓存有个生存时间,过期就删除缓存.这里可以考虑两种删除策略,一种是起一个线程,定期删除过期的key.第二个是,剔除模式,比较懒,访问到某个key的时候才,才去检查这个key是否过期,过期删除. 首先,对要缓存的value做了层封装,带了个时间戳 /** * Created by gxf on 2017/6/28. */ public class ValueWithTimeStamp<V>{ private lo

EhCache缓存框架

EhCache介绍 EhCache是一个纯Java的进程内缓存框架. 使用EhCache缓存框架,可以首先将数据存储到缓存中,缓存数据有两级:内存和磁盘,因此无需担心容量问题.缓存数据会在虚拟机重启的过程中写入磁盘.之所以用缓存框架,主要是相对于传统数据库速度更快. EhCache在数据量不是很大的时候可以很好的发挥作用,例如数据量在十万级别的小型爬虫,可以用于判断重复url. 导入依赖 从maven远程仓库导入依赖,建议选择较为稳定的2.X版本 <dependencies> <depe

java企业级通用权限安全框架源码 SpringMVC mybatis or hibernate+ehcache shiro druid bootstrap HTML5

开发快报: 页面打印功能,websocket 强制下线功能,玩转websocket技术  [金牌] 获取[下载地址]   QQ: 313596790 A 代码生成器(开发利器);      增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成    就不用写搬砖的代码了,生成的放到项目里,可以直接运行 B 阿里巴巴数据库连接池druid;   数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性

java企业级通用权限安全框架源码 SpringMVC mybatis or hibernate+ehcache shiro druid bootstrap HTML

开发快报: 页面打印功能,websocket 强制下线功能,玩转websocket技术  [金牌]获取[下载地址]   QQ: 313596790A 代码生成器(开发利器);     增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成   就不用写搬砖的代码了,生成的放到项目里,可以直接运行B 阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都

Ehcache缓存框架简介

EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. Ehcache是一种广泛使用的开源Java分布式缓存.主要面向通用缓存,Java EE和轻量级容器.它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点. Ehcache最初是由Greg Luck于2003年开始开发.2009年,该项目被Terracotta购买.软件仍然是开源,但一些

java 最流行的技术框架集合

开发快报: 页面打印功能,websocket 强制下线功能,玩转websocket技术  [金牌]获取[下载地址]   QQ: 313596790A 代码生成器(开发利器);     增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成   就不用写搬砖的代码了,生成的放到项目里,可以直接运行B 阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都