EhCache缓存框架

EhCache介绍

  EhCache是一个纯Java的进程内缓存框架。
  使用EhCache缓存框架,可以首先将数据存储到缓存中,缓存数据有两级:内存和磁盘,因此无需担心容量问题。缓存数据会在虚拟机重启的过程中写入磁盘。之所以用缓存框架,主要是相对于传统数据库速度更快。
  EhCache在数据量不是很大的时候可以很好的发挥作用,例如数据量在十万级别的小型爬虫,可以用于判断重复url。

导入依赖

  从maven远程仓库导入依赖,建议选择较为稳定的2.X版本

  

<dependencies>
    <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache</artifactId>
        <version>2.10.3</version>
    </dependency>
</dependencies>    

配置文件

  首先需要在 src/main/resources 目录下建立配置文件 ehcache.xml

Ehcach常用配置项

  cache元素的属性:
    name:缓存名称
    maxElementsInMemory:内存中最大缓存对象数
    maxElementsOnDisk:硬盘中最大缓存对象数,若是0表示无穷大
    eternal:true表示对象永不过期,此时会忽略timeToIdleSeconds和timeToLiveSeconds属性,默认为false
    overflowToDisk:true表示当内存缓存的对象数目达到了maxElementsInMemory界限后,会把溢出的对象写到硬盘缓存中。注意:如果缓存的对象要写入到硬盘中的话,则该对象必须实现了Serializable接口才行。
    diskSpoolBufferSizeMB:磁盘缓存区大小,默认为30MB。每个Cache都应该有自己的一个缓存区。
    diskPersistent:是否缓存虚拟机重启期数据
    diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认为120秒
    timeToIdleSeconds: 设定允许对象处于空闲状态的最长时间,以秒为单位。当对象自从最近一次被访问后,如果处于空闲状态的时间超过了timeToIdleSeconds属性值,这个对象就会过期,EHCache将把它从缓存中清空。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限期地处于空闲状态
    timeToLiveSeconds:设定对象允许存在于缓存中的最长时间,以秒为单位。当对象自从被存放到缓存中后,如果处于缓存中的时间超过了 timeToLiveSeconds属性值,这个对象就会过期,EHCache将把它从缓存中清除。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限期地存在于缓存中。timeToLiveSeconds必须大于timeToIdleSeconds属性,才有意义
    memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。可选策略有:LRU(最近最少使用,默认策略)、FIFO(先进先出)、LFU(最少访问次数)。

配置ehcache.xml

<?xml version="1.0" encoding="UTF-8"?>

<ehcache>
   <!--
         磁盘存储:将缓存中暂时不使用的对象,转移到硬盘,类似于Windows系统的虚拟内存
          path:指定在硬盘上存储对象的路径
   -->
   <diskStore path="C:\ehcache" />

   <!--
        defaultCache:默认的缓存配置信息,如果不加特殊说明,则所有对象按照此配置项处理
        maxElementsInMemory:设置了缓存的上限,最多存储多少个记录对象
        eternal:代表对象是否永不过期
        overflowToDisk:当内存中Element数量达到maxElementsInMemory时,Ehcache将会Element写到磁盘中
   -->
   <defaultCache
      maxElementsInMemory="100"
      eternal="true"
      overflowToDisk="true"/>

    <!--
        maxElementsInMemory设置成1,overflowToDisk设置成true,只要有一个缓存元素,就直接存到硬盘上去
        eternal设置成true,代表对象永久有效
        maxElementsOnDisk设置成0 表示硬盘中最大缓存对象数无限大
        diskPersistent设置成true表示缓存虚拟机重启期数据
     -->
    <cache
      name="a"
      maxElementsInMemory="1"
      eternal="true"
      overflowToDisk="true"
      maxElementsOnDisk="0"
      diskPersistent="true"/>

</ehcache>

实例代码

package cn.cslg;

import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;

public class EhcacheTest {

    public static void main(String[] args) {
        // 根据ehcache.xml配置文件创建Cache管理器
        CacheManager manager=CacheManager.create("./src/main/resources/ehcache.xml");
        Cache c=manager.getCache("a"); // 获取指定cache
        Element e=new Element("name","zhangsan");
        c.put(e); // 把一个元素添加到Cache中

        Element e2=c.get("name"); // 根据key获取缓存元素
        System.out.println(e2); // 自动toString
        System.out.println(e2.getObjectValue()); // 打印对象值

        c.flush(); // 刷新缓存
        manager.shutdown(); // 关闭缓存管理器

    }
}
时间: 2024-12-16 20:01:25

EhCache缓存框架的相关文章

mybatis0210 mybatis和ehcache缓存框架整合

1.1mybatis和ehcache缓存框架整合 一般不用mybatis来管理缓存而是用其他缓存框架在管理缓存,因为其他缓存框架管理缓存会更加高效,因为别人专业做缓存的而mybatis专业做sql语句的,mybatis二级缓存通过ehcache维护缓存数据. 1.1.1分布缓存 将缓存数据数据进行分布式管理.用户发起请求,首先会根据负载选择不同的服务器,如果用户在服务器1和服务器2都登录过,那么把用户的session分别放在服务器1和服务器2是不行的,所以就把用户的信息放在远程服务器集群中统一管

Ehcache缓存框架具体解释

一.前言 ehcache是一个比較成熟的java缓存框架.它提供了用内存,磁盘文件存储.以及分布式存储方式等多种灵活的cache管理方案.ehcache最早从hibernate发展而来. 因为3.x的版本号和2.x的版本号API差异比較大.这里直接学习最新版本号的了,可是最后整合spring的时候还是有2.x. 二.安装 因为我的项目是使用maven管理的,因此仅仅要在pom文件里加入例如以下代码就可以. <dependency> <groupId>javax.cache</

Ehcache缓存框架详解

一.前言 ehcache是一个比较成熟的java缓存框架,它提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的cache管理方案.ehcache最早从hibernate发展而来.由于3.x的版本和2.x的版本API差异比较大.这里直接学习最新版本的了,但是最后整合spring的时候还是有2.x. 二.安装 由于我的项目是使用maven管理的,因此只要在pom文件中添加如下代码即可. <dependency> <groupId>javax.cache</groupId&

Ehcache缓存框架简介

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

Ehcache缓存框架与 Shiro 框架 出现出现验证错误 &amp;&amp; Tomcat 缓存清除的问题

当一个项目使用久了以后就会出现各种问题,下面是我遇到的一个权限验证错误的问题 我的项目是   Ehcache 结合 Shiro  一起使用的,项目用用久了出现   Token验证错误,Cookie之类的...浏览器访问出现500 各种奇葩 我的做法是: 清除Google Chrome的 Cookie,和自动填表的功能 发现部署项目的时候,是可以部署的   而且可以打开首页 当输入账号密码,到后台验证的时候,出现错误 并且提示是Ehcache 与  Cookie之间的Token之类的错误 我想大概

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

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

Java 开源分布式缓存框架Ehcache

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

项目一:第十四天 1.在realm中动态授权 2.Shiro整合ehcache 缓存realm中授权信息 3.动态展示菜单数据 4.Quartz定时任务调度框架—Spring整合javamail发送邮件 5.基于poi实现分区导出

1 Shiro整合ehCache缓存授权信息 当需要进行权限校验时候:四种方式url拦截.注解.页面标签.代码级别,当需要验证权限会调用realm中的授权方法   Shiro框架内部整合好缓存管理器,整合ehcache环境,只需要配置即可.     <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId> <version>

Java的进程内缓存框架:EhCache

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