zoukankan      html  css  js  c++  java
  • Java的进程内缓存框架:EhCache

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

     
    Ehcache缓存的特点:
    1. 快速.
    2. 简单.
    3. 多种缓存策略
    4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题
    5. 缓存数据会在虚拟机重启的过程中写入磁盘
    6. 可以通过RMI、可插入API等方式进行分布式缓存
    7. 具有缓存和缓存管理器的侦听接口
    8. 支持多缓存管理器实例,以及一个实例的多个缓存区域
    9. 提供Hibernate的缓存实现
     
    Ehcache缓存的使用(1) – 安装ehcache
    Ehcache 的特点,是一个纯Java ,过程中(也可以理解成插入式)缓存实现,单独安装Ehcache ,需把ehcache-X.X.jar 和相关类库方到classpath中。如项目已安装了Hibernate ,则不需要做什么,直接可以使用Ehcache 。
     
    Ehcache缓存的使用(2) - 生成CacheManager
    使用CacheManager 创建并管理Cache
    1.创建CacheManager有4种方式:
    A:使用默认配置文件创建
    Java代码
    1.CacheManager manager = CacheManager.create(); 
     
    B:使用指定配置文件创建
    Java代码
    1.CacheManager manager = CacheManager.create("src/config/ehcache.xml"); 
     
    C:从classpath中找寻配置文件并创建
    Java代码
    1.URL url = getClass().getResource("/anothername.xml"); 
    2.CacheManager manager = CacheManager.create(url); 
     
    D:通过输入流创建
    Java代码
    1.InputStream fis = new FileInputStream(new File("src/config/ehcache.xml").getAbsolutePath()); 
    2.try { 
    3.manager = CacheManager.create(fis); 
    4.} finally { 
    5.fis.close(); 
    6.} 
     
    Ehcache缓存的使用(3) – 解读Ehcache配置文件ehcache.xml
    重要的参数
    <diskStore path="D:/work2/renhewww/cache"/>
    <cache name=" sampleCache1"
          maxElementsInMemory="1"
               maxElementsOnDisk="10000"
               eternal="false"
               overflowToDisk="true"
               diskSpoolBufferSizeMB="20"
               diskPersistent="true"
               timeToIdleSeconds="43200"
               timeToLiveSeconds="86400"
               memoryStoreEvictionPolicy="LFU"
            />
     

    属性解释:

    必须属性:

            name:设置缓存的名称,用于标志缓存,惟一

            maxElementsInMemory:在内存中最大的对象数量

            maxElementsOnDisk:在DiskStore中的最大对象数量,如为0,则没有限制

            eternal:设置元素是否永久的,如果为永久,则timeout忽略

            overflowToDisk:是否当memory中的数量达到限制后,保存到Disk

    可选的属性:

            timeToIdleSeconds:设置元素过期前的空闲时间

            timeToLiveSeconds:设置元素过期前的活动时间

            diskPersistent:是否disk store在虚拟机启动时持久化。默认为false

       diskExpiryThreadIntervalSeconds:运行disk终结线程的时间,默认为120秒

            memoryStoreEvictionPolicy:策略关于Eviction

    缓存子元素:

        cacheEventListenerFactory:注册相应的的缓存监听类,用于处理缓存事件,如put,remove,update,和expire

        bootstrapCacheLoaderFactory:指定相应的BootstrapCacheLoader,用于在初始化缓存,以及自动设置。

    Ehcache缓存的使用(4) – 创建Cache
    通过CacheManager创建Cache
    Cache cache = manager.getCache("sampleCache1");
     
    Ehcache缓存的使用(5) – 利用cache存取数据
    存储数据
    Element element = new Element("key1", "value1"); 
    cache.put(new Element(element); 
    获取数据
    Element element = cache.get("key1");
     
     

    缓存的创建,采用自动的方式  

    CacheManager singletonManager = CacheManager.create(); 

    singletonManager.addCache("testCache"); 

    Cache test = singletonManager.getCache("testCache");       

    或者直接创建Cache    

    CacheManager singletonManager = CacheManager.create(); 

    Cache memoryOnlyCache = new Cache("testCache", 5000, false, false, 5, 2); 

    manager.addCache(memoryOnlyCache); 

    Cache test = singletonManager.getCache("testCache");       

    删除cache    

    CacheManager singletonManager = CacheManager.create(); 

    singletonManager.removeCache("sampleCache1");      

    在使用ehcache后,需要关闭  

    CacheManager.getInstance().shutdown()     

    caches 的使用 

    Cache cache = manager.getCache("sampleCache1");        

    执行crud操作    

    Cache cache = manager.getCache("sampleCache1"); 

    Element element = new Element("key1", "value1"); 

    cache.put(element);       

    //update    

    Cache cache = manager.getCache("sampleCache1"); 

    cache.put(new Element("key1", "value1"); 

    //This updates the entry for "key1" 

    cache.put(new Element("key1", "value2");       

    //get Serializable    

    Cache cache = manager.getCache("sampleCache1"); 

    Element element = cache.get("key1"); 

    Serializable value = element.getValue();       

    //get non serializable    

    Cache cache = manager.getCache("sampleCache1"); 

    Element element = cache.get("key1"); 

    Object value = element.getObjectValue();       

    //remove    

    Cache cache = manager.getCache("sampleCache1"); 

    Element element = new Element("key1", "value1"  cache.remove("key1");     

  • 相关阅读:
    JAVA学习前应该了解
    JAVA帝国的诞生
    常用的快捷方式
    MarkDown学习
    运动检测
    图像分割
    感知机
    线性判别函数
    距离
    概率密度估计笔记——非参数估计
  • 原文地址:https://www.cnblogs.com/likeju/p/4784573.html
Copyright © 2011-2022 走看看