Ehcache配置详解及CacheManager使用

timeToIdleSeconds 当缓存闲置n秒后销毁 timeToLiveSeconds 当缓存存活n秒后销毁 缓存配置

   name:缓存名称。 
   maxElementsInMemory:缓存最大个数。 
   eternal:对象是否永久有效,一但设置了,timeout将不起作用。 
   timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。 
   timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。 
   <!--more-->
   overflowToDisk:当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。 
   diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。 
   maxElementsOnDisk:硬盘最大缓存个数。 
   diskPersistent:是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false. 
   diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。 
   memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。 
   clearOnFlush:内存数量最大时是否清除。 
<?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="com.Menu" maxElementsInMemory="150" eternal="false" timeToLiveSeconds="36000" timeToIdleSeconds="3600" overflowToDisk="true"/>   
</ehcache>  

EhcacheUtil工具类使用:

package com.acts.web.common.utils;

import java.net.URL;

import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Cache工具类
 * 创建者    张志朋
 * 创建时间    2016年8月1日
 *
 */
public class EhCacheUtils {

    protected static Logger logger = LoggerFactory
            .getLogger(EhCacheUtils.class);

    private static final String path = "/cache/ehcache-local.xml";

    private static URL url;

    private static CacheManager manager;

    private static final String SYS_CACHE = "sysCache";

    public static CacheManager getCacheManager() {
        if (manager != null) {
            return manager;
        }

        try {
            url = EhCacheUtils.class.getResource(path);
            manager = CacheManager.create(url);
        } catch (RuntimeException e) {
            logger.error("init flat cache failed", e);
            throw e;
        }

        return manager;
    }

    /**
     * 获取SYS_CACHE缓存
     *
     * @param key
     * @return
     */
    public static Object get(String key) {
        return get(SYS_CACHE, key);
    }

    /**
     * 写入SYS_CACHE缓存
     *
     * @param key
     * @return
     */
    public static void put(String key, Object value) {
        put(SYS_CACHE, key, value);
    }

    /**
     * 从SYS_CACHE缓存中移除
     *
     * @param key
     * @return
     */
    public static void remove(String key) {
        remove(SYS_CACHE, key);
    }

    public static void put(String cacheName, String key, Object value) {
        Cache cache = getCacheManager().getCache(cacheName);
        Element element = new Element(key, value);
        cache.put(element);
    }

    public static Object get(String cacheName, String key) {
        Cache cache = getCacheManager().getCache(cacheName);
        Element element = cache.get(key);
        return element == null ? null : element.getObjectValue();
    }

    public static Cache getCache(String cacheName) {
        return getCacheManager().getCache(cacheName);
    }

    public static void remove(String cacheName, String key) {
        Cache cache = getCacheManager().getCache(cacheName);
        cache.remove(key);
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Spring相关

第2章—装配Bean—自动化装配Bean

CD和CDPlayer,如果你不将CD放入(注入)到播放器中,那么CD播放器其实是没多大用处的,所以说,CD播放器是依赖于CD才能完成它的使命.

10320
来自专栏静默虚空的博客

Spring整合Ehcache管理缓存

前言 Ehcache 是一个成熟的缓存框架,你可以直接使用它来管理你的缓存。 Spring 提供了对缓存功能的抽象:即允许绑定不同的缓存解决方案(如Ehcac...

77070
来自专栏哎_小羊

GitLab 之 PlantUML 的配置及使用

目录 PlantUML介绍 环境、软件准备 PlantUML Server 安装及 GitLab 配置 实例 Demo 时序图 流程图 活动图 状态图 用例图...

862100
来自专栏小灰灰

Spring之RestTemplate中级使用篇

前面一篇介绍了如何使用RestTemplate发起post和get请求,然而也只能满足一些基本的场景,对于一些特殊的如需要设置请求头,添加认证信息等场景,却没有...

37310
来自专栏xingoo, 一个梦想做发明家的程序员

漫谈Java IO之 Netty与NIO服务器

前面介绍了基本的网络模型以及IO与NIO,那么有了NIO来开发非阻塞服务器,大家就满足了吗?有了技术支持,就回去追求效率,因此就产生了很多NIO的框架对NIO...

46080
来自专栏一个会写诗的程序员的博客

《Kotlin极简教程》第2章 快速开始:HelloWorld

我们在本章将介绍使用Kotlin程序设计语言,分别使用命令行、应用程序、Web RESTFul、Android、Kotlin JavaScript等方式向世界问...

13530
来自专栏犀利豆的技术空间

撸码的福音--变量名生成器的实现

最近换工作以后,结结实实的写了几个月的业务。需求完结以后,就找找自己喜欢的东西写写,换个口味。

51420
来自专栏cmazxiaoma的架构师之路

Java开发技术大杂烩(三)之电商项目优化、rabbitmq、Git、OSI、VIM、Intellj IDEA、HTTP、JS、Java

55670
来自专栏邹立巍的专栏

Linux 的进程间通信:信号量

Linux环境下主要实现的信号量有两种。根据标准的不同,它们跟共享内存类似,一套XSI的信号量,一套POSIX的信号量。下面我们分别使用它们实现一套类似文件锁的...

70300
来自专栏java学习

Spring整合Ehcache管理缓存

Ehcache 是一个成熟的缓存框架,你可以直接使用它来管理你的缓存。Spring 提供了对缓存功能的抽象:即允许绑定不同的缓存解决方案(如Ehcache),但...

14320

扫码关注云+社区

领取腾讯云代金券