zoukankan      html  css  js  c++  java
  • Java爬虫技术之Ehcache缓存学习笔记

    一、Ehcache简介及作用

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

         爬虫中应用用EhCache缓存框架主要是为了判断重复Url,每次爬取一个网页,都把Url存储到缓存中,并且每次爬某个网页之前,都去缓存中搜索下,假如存在的话,我们就不要爬取这个网页了,不存在的话,我们就爬下网页,爬取成功后,把这个Url存储到缓存中。

    1、新建maven项目,将jar包引入

    <!-- https://mvnrepository.com/artifact/net.sf.ehcache/ehcache -->
    <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache</artifactId>
        <version>2.10.4</version>
    </dependency>

    2、在source 目录下新建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"/>
        
    <cache 
          name="a"
          maxElementsInMemory="100"
          eternal="true"
          overflowToDisk="true"/>
     </ehcache>

    3、测试类

    结果

    二、Ehcache常用配置详解

     name:缓存名称 

        maxElementsInMemory:内存中最大缓存对象数 

        maxElementsOnDisk:硬盘中最大缓存对象数,若是0表示无穷大 

        eternal:true表示对象永不过期,此时会忽略timeToIdleSeconds和timeToLiveSeconds属性,默认为false 

        overflowToDisk:true表示当内存缓存的对象数目达到了maxElementsInMemory界限后,会把溢出的对象写到硬盘缓存中。

        diskSpoolBufferSizeMB:磁盘缓存区大小,默认为30MB。

        diskPersistent:是否缓存虚拟机重启期数据 

        diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认为120秒 

        timeToIdleSeconds: 设定允许对象处于空闲状态的最长时间,以秒为单位。如果处于空闲状态的时间超过了timeToIdleSeconds属性值,这个对象就会过期,EhCache将把它从缓存中清空。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限期地处于空闲状态 

        timeToLiveSeconds:设定对象允许存在于缓存中的最长时间,以秒为单位。如果处于缓存中的时间超过了 timeToLiveSeconds属性值,这个对象就会过期,EHCache将把它从缓存中清除。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限期地存在于缓存中。timeToLiveSeconds必须大于timeToIdleSeconds属性,才有意义 

    memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。可选策略有:LRU(最近最少使用,默认策略)、FIFO(先进先出)、LFU(最少访问次数)。 

    三、 配置持久化到硬盘 (将数据从内存转移到硬盘中保存)

      maxElementsInMemory设置成1,overflowToDisk设置成true,只要有一个缓存元素,就直接存到硬盘上去

        eternal设置成true,代表对象永久有效

        maxElementsOnDisk设置成0 表示硬盘中最大缓存对象数无限大

        diskPersistent设置成true表示缓存虚拟机重启期数据

    结果

    本博客为博主的学习笔记,不作任何商业用途。
  • 相关阅读:
    mysql-community-server-5.7.24 & 5.7.31 (5.6.35 升级到 5.7.24)
    企业 数据 能力 中台 大数据平台 CRM
    Tomcat日志切割配置
    你不知道的 Blob
    细说websocket快速重连机制
    DNS反向查询
    从安全的角度看待DNS
    LVS 负载均衡集群
    Linux服务器配置DNS解析
    react修改state的值
  • 原文地址:https://www.cnblogs.com/guo7533/p/8926315.html
Copyright © 2011-2022 走看看