• 学习ehcache心得


    ehcache可以单独使用也可以和hibernate、spring等一起使用。

    本人今天单独使用,并做些测试,分享经验如下,

    需要2个包,commons-logging.jar、ehcache-core-2.5.1.jar,最好使用ehcache的高版本,不然会配置文件的某些属性不可用,如maxElementsInMemory等。这个版本需要commons-logging.jar包。

    先配置xml文件,必须要有defaultCache,代码类似如下,

    <?xml version="1.0" encoding="UTF-8"?>
    <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://ehcache.sf.net/ehcache.xsd">

    <diskStore path="E:/mytemp" />

    <defaultCache
    maxElementsInMemory="10000"
    eternal="false"
    overflowToDisk="true"
    timeToIdleSeconds="10"
    timeToLiveSeconds="20"
    diskPersistent="false" />



    <cache name="requestCache"
    maxElementsInMemory="100000"
    eternal="false"
    overflowToDisk="false"
    timeToIdleSeconds="180"
    timeToLiveSeconds="180"
    diskPersistent="false"
    memoryStoreEvictionPolicy="LFU" />


    <cache name="myCache"
    maxElementsInMemory="2"
    eternal="false"
    overflowToDisk="true"
    timeToIdleSeconds="180"
    timeToLiveSeconds="180"
    maxElementsOnDisk="0"
    diskPersistent="true"
    memoryStoreEvictionPolicy="LFU" />
    </ehcache>

    diskStore中的 是硬盘存放路劲,有个参数是user.io.dir表示eclipse默认路径,在document and setting ....的某个子目录下。

    最好写自己的路径。

    几个重要属性,请参考这里

    需要注意的是

    当overflowToDisk为true时,在diskStore路劲下生成2个文件,一个是myCache.data和myCache.index,

    若diskPersistent 这个属性如果设置为false,main方法(或web应用关闭)结束后上面2个文件就没了。

    若diskPersistent 为true,则main方法结束后2文件存在

    当再次启动时,程序会加载myCache.index这个文件。

    测试方法如下,

    public class Test {

    public static void main(String[] args) {
    // 指定ehcache.xml的位置
    String fileName = "F:/myeclipse/workspace/ecache/src/ehcache.xml";
    CacheManager manager = new CacheManager(fileName);
    // 取出所有的cacheName
    String names[] = manager.getCacheNames();
    for (int i = 0; i < names.length; i++) {
    System.out.println(names[i]);
    }

    Cache cache = manager.getCache("myCache");
    System.out.println(cache.getSize());


    for(int i=0;i<100000;i++){
    cache.put(new Element("key1"+ i , "values1"+i));
    }


    // cache.flush();

    manager.shutdown();
    }
    }
    需要manager.shutdown(),不然要手动关闭



  • 相关阅读:
    [导入]对字符串进行SHA1和DES(加密,解密),加密和解密的类
    [导入]在DropDownList 中添加"请选择"
    [导入]GridView中添加层,点击打开,展开此层,反之
    [导入]中文的SqlHelper.cs类
    [导入]怎样从ASP.NET 2.0中读取连接字符串
    项目主管做的事
    [导入]用.NET轻松分析字符串值
    [导入]SQL 缓存失效 2.0 版中的新增功能
    [导入]ListBox绑定数据,从左边移到右边的ListBox
    [导入]GridView 自定义分页
  • 原文地址:https://www.cnblogs.com/xiongjinpeng/p/2423314.html
Copyright © 2020-2023  润新知