首页 > 代码库 > EHcache缓存写入内存和硬盘机制

EHcache缓存写入内存和硬盘机制

Ehcache是用于配置管理缓存的一个缓存框架,我们从它的ehcache.xml文件中分析,它是如何将数据插入内存和硬盘中。

<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
	<diskStore path="java.io.tmpdir" />
	
	<defaultCache 
		maxElementsInMemory="500" 
		eternal="false" 
		timeToIdleSeconds="300" 
		timeToLiveSeconds="1200" 
		overflowToDisk="true" />
	
	<cache 
		name="testcache" 
		maxElementsInMemory="150" 
		eternal="false" 
		timeToLiveSeconds="36000" 
		timeToIdleSeconds="3600" 
		overflowToDisk="true"/> 
</ehcache>

上面的

<diskStore path="java.io.tmpdir" />
就是配置缓存存入硬盘的路径,它指向操作系统的一个临时文件存放路径,可以通过System.getProperty("java.io.tmpdir")获取路径信息。

maxElementsInMemory=500这个是配置内存最大对象数的

overflowToDisk="true"当超过500时它就会存入硬盘中配置好的路径下面。

可以写段代码改变循环次数:100,400,2000测试,观察目录下面是否有文件生成:

package com.xxinfo.ylzcache;
 
import org.apache.log4j.Logger; 
 
import net.sf.ehcache.Cache; 
import net.sf.ehcache.CacheManager; 
import net.sf.ehcache.Element; 
 
public class EhcacheTest { 
     
    private static final Logger logger = Logger.getLogger(EhcacheTest.class); 
     
    private static Cache sampleCache = null; 
     
    public static void main(String[] args) { 
        init(); 
        test(); 
    } 
 
    private static void test() { 
        logger.info(sampleCache.getMemoryStoreEvictionPolicy()); 
        for(int i=0; i<2000; i++){ 
            //写入缓存 
            sampleCache.put(new Element(i, "v" + i)); 
            //打印当前缓存的所有值 
            logger.info(sampleCache.getKeys()); 
            //读取缓存 
            Element e = sampleCache.get(i); 
            logger.info(e.getValue()); 
        } 
        //打印命中统计 
        logger.info(sampleCache.getStatistics()); 
        CacheManager.getInstance().shutdown() ;
    } 
     
    private static void init() { 
        CacheManager manager = CacheManager.create(); 
        sampleCache = manager.getCache("testcache"); 
    } 
 
}