EhCache缓存框架简介和简单实例

一、EhCache简介:

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

 

我们使用EhCache缓存框架主要是为了判断重复Url,每次爬取一个网页,都把Url存储到缓存中,并且每次爬某个网页之前,都去缓存中搜索下,假如存在的话,我们就不要爬取这个网页了,不存在的话,我们就爬下网页,爬取成功后,把这个Url存储到缓存中;之所以用缓存框架,主要是速度快,相对于传统数据库;

 

Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。

Ehcache最初是由Greg Luck于2003年开始开发。2009年,该项目被Terracotta购买。软件仍然是开源,但一些新的主要功能(例如,快速可重启性之间的一致性的)只能在商业产品中使用,例如Enterprise EHCache and BigMemory。维基媒体Foundationannounced目前使用的就是Ehcache技术。

 

主要的特性有:

1. 快速

2. 简单

3. 多种缓存策略

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

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

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

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

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

9. 提供Hibernate的缓存实现

二、EhCache使用demo

EhCache最新版本是3.X 本人一直用的是2.X 比较稳定 功能足够用;

所以还是用2.X版本;

 

我们新建一个Maven项目,

pom.xml里引入 ehcache支持;

1

2

3

4

5

<dependency>

    <groupId>net.sf.ehcache</groupId>

    <artifactId>ehcache</artifactId>

    <version>2.10.3</version>

</dependency>

 

ehcache.xml配置文件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

<?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"/>

 

     

    <cache 

      name="a"

      maxElementsInMemory="100"

      eternal="true"

      overflowToDisk="true"/>

 

</ehcache>

 

我们再新建一个测试类:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

package com.open1111;

 

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("java1234","屌"); // 实例化一个元素

        c.put(e); // 把一个元素添加到Cache中

         

        Element e2=c.get("java1234"); // 根据Key获取缓存元素

        System.out.println(e2);

        System.out.println(e2.getObjectValue());

         

        c.flush(); // 刷新缓存

        manager.shutdown(); // 关闭缓存管理器

    }

}

运行输出:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

[ key = java1234, value=屌, version=1, hitCount=1, CreationTime = 1490928074754, LastAccessTime = 1490928074764 ]

 

目录结构:

QQ鎴浘20170331105338.jpg

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值