缓存的意义及EhCache的使用

缓存的作用

       缓存(Cache)是一块为提升系统性能而开辟出来的内存空间。其主要作用是暂存数据处理结果,并提供下次访问使用。在很多场合,数据的处理或者数据获取可能非常费时,当对这个数据的请求量很大时,频繁的数据处理会消耗大量资源。缓存的作用就是将这些来之不易的数据存储起来,当再次请求此数据时,直接从缓存中获取而省略数据处理流程,从而降低资源的消耗提高响应速度。

EhCache配置文件

<ehcache>
    <!--缓存文件位置-->
    <diskStore path="/data/ehcache"/>

    <defaultCache maxElementsInMemory="10000" eternal="false" overflowToDisk="true" timeToIdleSeconds="120"
                  timeToLiveSeconds="120" diskPersistent="false" diskExpiryThreadIntervalSeconds="120"/>
    <cache name="cache" maxElementsInMemory="10000" eternal="false" overflowToDisk="true" timeToIdleSeconds="120"
           timeToLiveSeconds="120" diskPersistent="false"/>
</ehcache>

EhCache配置文件说明

maxElementsInMemory:该缓存中允许存放的最大条目数
eternal:缓存内容是否永久缓存
overflowToDisk:如果内存中的数据超过maxElementsInMemory,是否使用磁盘存储
timeToIdleSeconds:如果不是永久存储的缓存,那么在timeToIdleSeconds指定时间内没有访问一个条目,则移除它
timeToLiveSeconds:如果不是永久存储的缓存,一个条目可以存在的最长时间
diskPersistent:磁盘存储的条目是否永久保存
diskExpiryThreadIntervalSeconds:磁盘清理线程的运行时间间隔

EhCache工具类

/**
 * Created by YangJinyou on 2018/07.
 * EhCache工具类
 */
public class EhCacheUtil {
    private static CacheManager manage;

    static {
        //载入EhCache配置文件,创建CacheManager
        manage = CacheManager.create(EhCacheUtil.class.getResourceAsStream("/cache/ehcache.xml"));
    }

    /**
     * 将数据存入缓存
     *
     * @param cacheName
     * @param key
     * @param value
     */
    public static void put(String cacheName, Serializable key, Serializable value) {
        manage.getCache(cacheName).put(new Element(key, value));
    }

    /**
     * 从缓存中取出数据
     *
     * @param cacheName
     * @param key
     * @return
     */
    public static Serializable get(String cacheName, Serializable key) {
        try {
            Element e = manage.getCache(cacheName).get(key);
            if (e != null) {
                return e.getValue();
            }
        } catch (IllegalStateException e1) {
            e1.printStackTrace();
        } catch (CacheException e1) {
            e1.printStackTrace();
        } catch (ClassCastException e1) {
            e1.printStackTrace();
        }
        return null;
    }
}

本工程用于研究如何借助Ehcache缓存框架实现对页面的缓存 本工程编码方式:UTF-8 本工程开发工具:MyEclipse 说明: 1、ehcache.xml和ehcache.xsd两个文件可以在下在下载下来的名为“ehcache-core-x.x.x-distribution.tar.gz”压缩文件中找到 2、由于要实现Ehcache缓存页面,所以必须要添加“ehcache-web-2.0.4.jar” jar包,该jar包主要用于辅助Ehcache实现页面缓存 注意: 本web工程的发布不要使用Tomcat7,否则会出现如下异常: 2015-3-25 9:53:50 org.apache.catalina.loader.WebappClassLoader loadClass 信息: Illegal access: this web application instance has been stopped already. Could not load net.sf.ehcache.store.disk.DiskStore$KeySet. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact. java.lang.IllegalStateException at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1600) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) at net.sf.ehcache.store.disk.DiskStore.keySet(DiskStore.java:560) at net.sf.ehcache.store.disk.DiskStorageFactory$DiskExpiryTask.run(DiskStorageFactory.java:838) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) 相关jar包下载地址: Ehcache 对象、数据缓存:http://ehcache.org/downloads/destination?name=ehcache-core-2.5.2-distribution.tar.gz&bucket=tcdistributions&file=ehcache
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值