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

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

主要的特性有:

1. 快速

2. 简单

3. 多种缓存策略

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

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

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

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

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

9. 提供Hibernate的缓存实现

项目文件结构

下载jar包->贴jar包->引入jar包

jar包可以从Maven仓库找,目前直接百度的比较少。

ehcache.xml

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

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

  

代码如下:

  

package com.zhi.zibo;

import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element; public class App { public static void main(String[] args) {
// 根据ehcache.xml配置文件创建Cache管理器
CacheManager manager=CacheManager.create("src/ehcache.xml");
Cache c=manager.getCache("a"); // 获取指定Cache
Element e=new Element("oracle","zhi"); // 实例化一个元素
c.put(e); // 把一个元素添加到Cache中 Element e2=c.get("oracle"); // 根据Key获取缓存元素
System.out.println(e2);
System.out.println(e2.getObjectValue()); c.flush(); // 刷新缓存
manager.shutdown(); // 关闭缓存管理器
} }

  运行如图:

最新文章

  1. 利用ajaxfileupload.js异步上传文件
  2. python 文件操作总结
  3. 教你50招提升ASP.NET性能(五):确保分页是在数据层完成的
  4. java数组遍历——iterator和for方法
  5. 【6】JAVA---地址App小软件(QueryPanel.class)(表现层)
  6. K - Treasure Exploration - POJ 2594(最小路径覆盖+闭包传递)
  7. MySQL 採用Xtrabackup对数据库进行全库备份
  8. IIS7和IIS7.5备份和还原的方法
  9. libprotobuff8.so not found
  10. Linux - 设置/取消代理
  11. linux内核中听过就能记住的概念
  12. Linux 中提高的 SSH 的安全性
  13. 下载Eclipse、下载Java各个版本,来这里就对了
  14. Set authorization for a whole area
  15. 初学UML之-------用例图
  16. ElasticSearch 笔记
  17. appium入门级教程(3)—— 安装 Android SDK
  18. 2014年第五届蓝桥杯C/C++B组省赛题目解析
  19. Mac OS 电信3G上网设置
  20. 新的起点 Entry KINGSOFT

热门文章

  1. 网络摄像头CVE
  2. linux启动内核源码分析
  3. python+selenium的WebElement对象操作
  4. 远程访问其他主机的Mysql(Ubuntu)
  5. java面向对象基础总结
  6. uWSGI、uwsgi、WSGI、之间的关系,为什么要用nginx加uWSGI部署。
  7. 如何在CentOS 7上安装Node.js和npm
  8. vue路由守卫配合权限,白名单
  9. tree 数状型结构显示目录下的内容
  10. struts2的相关知识(实现原理、拦截器)