Cache的配置很灵活,官方提供的Cache配置方式有好几种。你可以通过声明配置、在xml中配置、在程序里配置或者调用构造方法时传入不同的参数。

你可以将Cache的配置从代码中剥离出来,也可以在使用运行时配置,所谓的运行时配置无非也就是在代码中配置。以下是运行时配置的好处:

·   在同一个地方配置所有的Cache,这样很容易管理Cache的内存和磁盘消耗。

·   发布时可更改Cache配置。

·   可再安装阶段就检查出配置错误信息,而避免了运行时错误。

本文将会对ehcache.xml配置文件进行详细的阐述。在配置的时可以拷贝一个现有的ehcache.xml.

ehcache.xml片段:

maxElementsInMemory="10000"eternal="false"timeToIdleSeconds="120"timeToLiveSeconds="120"overflowToDisk="true"maxElementsOnDisk="10000000"diskPersistent="false"diskExpiryThreadIntervalSeconds="120"memoryStoreEvictionPolicy="LRU"/>

ehcache.xml和其他配置文件

在Ehcache-1.6之前的版本,只支持ASCII编码的ehcache.xml配置文件。在Ehcach-1.6之后版本中,支持UTF8编码的ehcache.xml配置文件。因为向后兼容,所有采用ASCII编码的配置文件完全没有必要转换为UTF8。

一个CacheManager必须要有一个XML配置。由于磁盘路径或是监听端口,多个CacheManager使用同一个配置文件时会出现错误。

下面是ehcache.xml具体实例以及配置指南

·   CacheManager配置

DmulticastGroupPort=4446,这样可以配置监听端口。

·   DiskStore配置

如果你使用的DiskStore(磁盘缓存),你必须要配置DiskStore配置项。如果不配置,Ehcache将会使用java.io.tmpdir。

diskStroe的“path”属性是用来配置磁盘缓存使用的物理路径的,Ehcache磁盘缓存使用的文件后缀名是.data和.index。

·   CacheManagerEventListener配置

我们通过CacheManagerEventListenerFactory可以实例化一个CacheManagerPeerProvider,当我们从CacheManager中added和removed

Cache时,将通知CacheManagerPeerProvider,这样一来,我们就可以很方面的对CacheManager中的Cache做一些统计。

注册到CacheManager的事件监听类名有: adding a Cache和removing a Cache

·   CacheManagerPeerProvider配置

在集群中CacheManager配置CacheManagerPeerProviderFactory创建CacheManagerPeerProvider。具体的实例如下:

properties="peerDiscovery=manual,

rmiUrls=//server1:40000/sampleCache1|//server2:40000/sampleCache1|

//server1:40000/sampleCache2|//server2:40000/sampleCache2"

propertySeparator="," />

·   CacheManagerPeerListener配置

CacheManagerPeerListener配置是用来监听集群中缓存消息的分发的。

class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"

properties="hostName=fully_qualified_hostname_or_ip,

port=40001,

socketTimeoutMillis=120000"

propertySeparator="," />

·   Cache配置

·           name:Cache的唯一标识

·           maxElementsInMemory:内存中最大缓存对象数。

·           maxElementsOnDisk:磁盘中最大缓存对象数,若是0表示无穷大。

·           eternal:Element是否永久有效,一但设置了,timeout将不起作用。

·           overflowToDisk:配置此属性,当内存中Element数量达到maxElementsInMemory时,Ehcache将会Element写到磁盘中。

·           timeToIdleSeconds:设置Element在失效前的允许闲置时间。仅当element不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。

·           timeToLiveSeconds:设置Element在失效前允许存活时间。最大时间介于创建时间和失效时间之间。仅当element不是永久有效时使用,默认是0.,也就是element存活时间无穷大。

·           diskPersistent:是否缓存虚拟机重启期数据。(这个虚拟机是指什么虚拟机一直没看明白是什么,有高人还希望能指点一二)。

·           diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。

·           diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。

·

memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。这里比较遗憾,Ehcache并没有提供一个用户定制策略的接口,仅仅支持三种指定策略,感觉做的不够理想。

·   Cache Exception Handling配置

class="com.example.ExampleExceptionHandlerFactory"

properties="logLevel=FINE"/>

总结

这里只对通用缓存的配置做了详细的阐述,至于RMI缓存和集群缓存可以参考这里。

下面给出几个配置示例:

·   Ehcache默认Cache配置

·   SampleCache1配置

简单配置,在ehcache.xml文件中有此配置,在使用Ehcache前最好将其删除掉,自己配置。

缓存名sampleCache1,内存中最多可缓存10000个Element,其中的element会在闲置5分钟或是存活10分钟之后失效。

超过10000element时,element将会输出到磁盘中,输出路径是java.io.tmpdir。

·   SampleCache2配置

Cache名为SampleCache2,内存中最多可以缓存1000个element,超出1000不能输出到磁盘中。缓存是永久有效的。

·   SampleCache3配置

Cache名为SampleCache3。可缓存到磁盘。磁盘缓存将会缓存虚拟机重启期的数据。磁盘缓存失效线程运行间隔时间是10分钟。

·   sampleDistributedCache1配置

·   sampleDistributedCache2配置

·   sampleDistributedCache3配置

代码

代码

class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"properties="asynchronousReplicationIntervalMillis=200"/>

代码

代码

Cache名为sampleDistributedCache1。

class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>

class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"/>

代码

maxElementsInMemory="10000"eternal="false"timeToIdleSeconds="120"timeToLiveSeconds="120"overflowToDisk="true"diskSpoolBufferSizeMB="30"maxElementsOnDisk="10000000"diskPersistent="false"diskExpiryThreadIntervalSeconds="120"memoryStoreEvictionPolicy="LRU"/>

代码

ehchache验证缓存过期的api_Ehcache缓存配置相关推荐

  1. ehchache验证缓存过期的api_Ehcache缓存时间设置

    timeToLiveSeconds和timeToIdleSeconds timeToLiveSeconds=x:缓存自创建日期起至失效时的间隔时间x: timeToIdleSeconds=y:缓存创建 ...

  2. ehchache验证缓存过期的api_SpringBoot - 缓存的使用详解1(使用Ehcache 2.x缓存)

    Spring 3.1中开始对缓存提供支持,核心思路是对方法的缓存,当我们调用一个方法时,将方法的参数和返回值作为 key/value缓存起来,当再次调用该方法时,如果缓存中有数据,就直接从缓存中获取, ...

  3. Redis 缓存过期(maxmemory) 配置/算法 详解

    LRU(Least Recently Used) 最近最少使用算法是众多置换算法中的一种. Redis中有一个 maxmemory 概念,主要是为了将使用的内存限定在一个固定的大小.Redis 用到的 ...

  4. 浏览器缓存知识+JS实现缓存

    http header中与缓存有关的关键属性 Etag:倾向于资源是否变更 Last-modified: 倾向于时间状态的变更. cache-control:[public.private.no-st ...

  5. ehchache验证缓存过期的api_ASP.NET Core ResponseCache进行缓存操作

    (给DotNet加星标,提升.Net技能) 转自:HueiFengcnblogs.com/yyfh/p/12361255.html 前言 本章将介绍客户端缓存将介绍浏览器缓存和服务端缓存,使用浏览器缓 ...

  6. Spring Caching配置缓存过期时间

    文章目录 一.Spring Cache是什么? 二.使用步骤 1.开启基于注解的缓存 2.配置缓存 三.解决方案 方案一:通过编写config设置缓存相关项 方案二:通过配置文件 一.Spring C ...

  7. 数据库缓存服务——NoSQL之Redis配置与优化

    一.缓存概念 缓存是为了调节速度不一致的两个或多个不同的物质的速度,在中间对速度较慢的一方起到加速作用,比如CPU的一级.二级缓存是保存了CPU最近经常访问的数据,内存是保存CPU经常访问硬盘的数据, ...

  8. redis 缓存过期默认时间_过期redis时间

    Redis命令--键(key) Redis 键(key) Redis 键命令用于管理 redis 的键. 语法 Redis 键命令的基本语法如下: redis 127.0.0.1:6379> C ...

  9. Nginx设置静态页面压缩和缓存过期时间的方法 (转)

    使用nginx服务器的朋友可能都知道需要设置html静态页面缓存与页面压缩与过期时间的设置了,下面我来给各位同学介绍一下配置方法,包括对ico,gif,bmp,jpg,jpeg,swf,js,css, ...

最新文章

  1. 【Project Euler】530 GCD of Divisors 莫比乌斯反演
  2. Ubuntu系统下移动宽带自动启用设置
  3. WHY MAKE ANOTHER APPLICATION AT ISSM?
  4. 关于django的模板
  5. 金三银四的面试黄金季节,Android面试题来了!
  6. get、post请求参数乱码解决方法(qq:1324981084)
  7. GNOME下也是Alt+F2,输入gnome-terminal
  8. Open vSwitch流表应用实战
  9. JavaWeb — session+Cookie
  10. signal(SIGHUP, SIG_IGN)的含义
  11. C++头文件预编译与命名空间使用方法
  12. 虚幻引擎UE4加载GIS数据《数字孪生智慧城市》
  13. Java 视频转码(转为MPEG-4格式)
  14. pixel bender 学习备忘录
  15. 聚播群控微信二次开发sdk完整API
  16. MATLAB函数bsxfun
  17. 如何将访问的接口去掉token验证
  18. php 0xef 0xbb 0xbf,utf-8编码的csv文件,用excel打开乱码,解决办法,在输出前加 0xEF,0xBB,0xBF三个char...
  19. VBA中窗体模块、标准模块和类模块的区别
  20. 小程序如何引用阿里巴巴图标

热门文章

  1. 官狼服务器临时维护,官狼三分钟新模式,跑跑狼人杀如何边跑边杀
  2. mysql查逻辑表的分片规则_MySQL(19) Mycat分片(分库分表)配置
  3. C#中的前台线程和后台线程的区别
  4. 14.6 Spring MVC 测试框架(翻译)
  5. verilog设置24进制计数器_阅读笔记:《Verilog HDL入门》第3章 Verilog语言要素
  6. python unicode error_关于GAE中运行python出现unicode decode error
  7. C++ Lambda表达式基本用法
  8. wince2秒快速启动TOC分析
  9. json返回页面读取data里的值都是object_【一】尤大神都说Vite香,让我来手把手分析Vite原理...
  10. js如何获取计算机当前时间,js获取当前系统时间