ehchache验证缓存过期的api_Ehcache缓存配置
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缓存配置相关推荐
- ehchache验证缓存过期的api_Ehcache缓存时间设置
timeToLiveSeconds和timeToIdleSeconds timeToLiveSeconds=x:缓存自创建日期起至失效时的间隔时间x: timeToIdleSeconds=y:缓存创建 ...
- ehchache验证缓存过期的api_SpringBoot - 缓存的使用详解1(使用Ehcache 2.x缓存)
Spring 3.1中开始对缓存提供支持,核心思路是对方法的缓存,当我们调用一个方法时,将方法的参数和返回值作为 key/value缓存起来,当再次调用该方法时,如果缓存中有数据,就直接从缓存中获取, ...
- Redis 缓存过期(maxmemory) 配置/算法 详解
LRU(Least Recently Used) 最近最少使用算法是众多置换算法中的一种. Redis中有一个 maxmemory 概念,主要是为了将使用的内存限定在一个固定的大小.Redis 用到的 ...
- 浏览器缓存知识+JS实现缓存
http header中与缓存有关的关键属性 Etag:倾向于资源是否变更 Last-modified: 倾向于时间状态的变更. cache-control:[public.private.no-st ...
- ehchache验证缓存过期的api_ASP.NET Core ResponseCache进行缓存操作
(给DotNet加星标,提升.Net技能) 转自:HueiFengcnblogs.com/yyfh/p/12361255.html 前言 本章将介绍客户端缓存将介绍浏览器缓存和服务端缓存,使用浏览器缓 ...
- Spring Caching配置缓存过期时间
文章目录 一.Spring Cache是什么? 二.使用步骤 1.开启基于注解的缓存 2.配置缓存 三.解决方案 方案一:通过编写config设置缓存相关项 方案二:通过配置文件 一.Spring C ...
- 数据库缓存服务——NoSQL之Redis配置与优化
一.缓存概念 缓存是为了调节速度不一致的两个或多个不同的物质的速度,在中间对速度较慢的一方起到加速作用,比如CPU的一级.二级缓存是保存了CPU最近经常访问的数据,内存是保存CPU经常访问硬盘的数据, ...
- redis 缓存过期默认时间_过期redis时间
Redis命令--键(key) Redis 键(key) Redis 键命令用于管理 redis 的键. 语法 Redis 键命令的基本语法如下: redis 127.0.0.1:6379> C ...
- Nginx设置静态页面压缩和缓存过期时间的方法 (转)
使用nginx服务器的朋友可能都知道需要设置html静态页面缓存与页面压缩与过期时间的设置了,下面我来给各位同学介绍一下配置方法,包括对ico,gif,bmp,jpg,jpeg,swf,js,css, ...
最新文章
- 【Project Euler】530 GCD of Divisors 莫比乌斯反演
- Ubuntu系统下移动宽带自动启用设置
- WHY MAKE ANOTHER APPLICATION AT ISSM?
- 关于django的模板
- 金三银四的面试黄金季节,Android面试题来了!
- get、post请求参数乱码解决方法(qq:1324981084)
- GNOME下也是Alt+F2,输入gnome-terminal
- Open vSwitch流表应用实战
- JavaWeb — session+Cookie
- signal(SIGHUP, SIG_IGN)的含义
- C++头文件预编译与命名空间使用方法
- 虚幻引擎UE4加载GIS数据《数字孪生智慧城市》
- Java 视频转码(转为MPEG-4格式)
- pixel bender 学习备忘录
- 聚播群控微信二次开发sdk完整API
- MATLAB函数bsxfun
- 如何将访问的接口去掉token验证
- php 0xef 0xbb 0xbf,utf-8编码的csv文件,用excel打开乱码,解决办法,在输出前加 0xEF,0xBB,0xBF三个char...
- VBA中窗体模块、标准模块和类模块的区别
- 小程序如何引用阿里巴巴图标
热门文章
- 官狼服务器临时维护,官狼三分钟新模式,跑跑狼人杀如何边跑边杀
- mysql查逻辑表的分片规则_MySQL(19) Mycat分片(分库分表)配置
- C#中的前台线程和后台线程的区别
- 14.6 Spring MVC 测试框架(翻译)
- verilog设置24进制计数器_阅读笔记:《Verilog HDL入门》第3章 Verilog语言要素
- python unicode error_关于GAE中运行python出现unicode decode error
- C++ Lambda表达式基本用法
- wince2秒快速启动TOC分析
- json返回页面读取data里的值都是object_【一】尤大神都说Vite香,让我来手把手分析Vite原理...
- js如何获取计算机当前时间,js获取当前系统时间