当前位置:网站首页>Ehcache配置资料,方便自己查
Ehcache配置资料,方便自己查
2022-06-28 20:19:00 【=PNZ=BeijingL】

Ehcache是什么
百度:
Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。
Ehcache最初是由Greg Luck于2003年开始开发。2009年,该项目被Terracotta购买。软件仍然是开源,但一些新的主要功能(例如,快速可重启性之间的一致性的)只能在商业产品中使用,例如Enterprise EHCache and BigMemory。维基媒体Foundationannounced目前使用的就是Ehcache技术
Ehcache和Redis
- ehcache直接在jvm虚拟机中缓存,速度快,效率高;但是缓存共享麻烦,集群分布式应用不方便。ehcache有缓存共享方案,通过RMI或者Jgroup多播方式进行广播缓存通知更新,缓存共享复杂,维护不方便;简单的共享可以,但涉及缓存恢复、大数据缓存,则不适合。
- Redis是通过socket访问到缓存服务器,效率比ehcache低,比数据库快。处理集群和分布式缓存方便,有成熟的方案。如果单个应用对缓存访问要求高可用ehcache,如果是大型系统,存在缓存共享、分布式部署、缓存内容大,建议用redis。
基本配置
- diskStore : ehcache支持内存和磁盘两种存储
- path :指定磁盘存储的位置
- defaultCache : 默认的缓存
- maxEntriesLocalHeap=”10000”
- eternal=”false”
- timeToIdleSeconds=”120”
- timeToLiveSeconds=”120”
- maxEntriesLocalDisk=”10000000”
- diskExpiryThreadIntervalSeconds=”120”
- memoryStoreEvictionPolicy=”LRU”
- cache :自定的缓存,当自定的配置不满足实际情况时可以通过自定义(可以包含多个cache节点)
- name : 缓存的名称,可以通过指定名称获取指定的某个Cache对象
- maxElementsInMemory :内存中允许存储的最大的元素个数,0代表无限个
- clearOnFlush:内存数量最大时是否清除。
- eternal :设置缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期。根据存储数据的不同,例如一些静态不变的数据如省市区等可以设置为永不过时
- timeToIdleSeconds : 设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。
- timeToLiveSeconds :缓存数据的生存时间(TTL),也就是一个元素从构建到消亡的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是0就意味着元素可以停顿无穷长的时间。
- overflowToDisk :内存不足时,是否启用磁盘缓存。设置当内存中缓存达到maxInMemory 限制时元素是否可写到磁盘上
- maxEntriesLocalDisk:当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。
- maxElementsOnDisk:硬盘最大缓存个数。
- diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。
- diskPersistent:是否在VM重启时存储硬盘的缓存数据。默认值是false。
- diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。Ehcache有一个后台线程专门做Ellment失效监测以及清除工作。设置线程运行间隔时间,可通过设置diskExpiryThreadIntervalSeconds属性来完成,此值不宜设置过低,否则会导致清理线程占用大量CPU资源
- 修改daoCache 只需要再后面增加 statistics="true” 才可以得到缓存分析信息 cache.getStatistics() 如 缓存命中率
- 磁盘缓存大小默认是没有限制的,不过可通过maxElementsOnDisk来指定。当磁盘缓存达到maxElementsOnDisk指定的值时,Ehcache会清理磁盘中的缓存使用默认策略是LFU(使用频率最低)
maxBytesLocalHeap是用来限制缓存所能使用的堆内存的最大字节数的,其单位可以是K、M或G,不区分大小写。默认是0,表示不限制。但是当我们没有指定CacheManager级别的maxBytesLocalHeap时,我们必须在每一个Cache上指定maxBytesLocalHeap或maxEntriesLocalHeap。
- maxBytesLocalOffHeap是用来限制缓存所能使用的非堆内存的最大字节数,其单位也可以是K、M或G。默认是0,表示不限制。但是当我们在CacheManager级别指定了maxBytesLocalOffHeap时就会隐式的使所有Cache级别的overflowToOffHeap为true,在Cache级别使用该属性时只会使当前Cache的overflowToOffHeap为true。如果此时不需要overflowToOffHeap的话,那么我们需要在Cache级别显示的指定overflowToOffHeap为false。只有企业版的Ehcache才能使用非堆内存存储缓存信息。
- maxBytesLocalDisk是用来限制缓存所能使用的磁盘的最大字节数的,其单位可以是K、M或G。默认是0,表示不限制。只有在单机环境下才可以使用本地磁盘,分布式环境下是不可以使用的。另外,这个设置只适用于临时将缓存内的信息写入到磁盘的情况,对于持久化缓存信息到磁盘的情况是不适用的。Cache级别的maxBytesLocalDisk同样如此。当我们在CacheManager级别指定了maxBytesLocalDisk时会隐式的指定所有Cache的overflowToDisk为true,而Cache级别只会使当前Cache的overflowToDisk为true。
- maxEntriesLocalHeap是用来限制当前缓存在堆内存上所能保存的最大元素数量的
- maxEntriesLocalDisk是用来限制在磁盘上所能保存的元素的最大数量的
三种策略
1.LRU:最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清除缓存。
2.LFU:最少被使用,缓存的元素有一个hit属性,hit值最小的将会被清除缓存。
3.FIFO:先进先出。
参考链接:https://www.jianshu.com/p/3c659b5ce6a2
边栏推荐
- grep文本搜索工具
- With a market value of $120billion, how did intuit, an old tax giant, do it?
- 03.hello_ rust
- Configuration du mode tcwind
- 2022年T电梯修理考试题库模拟考试平台操作
- How to analyze the relationship between enterprise digital transformation and data asset management?
- Comparisonchain file name sort
- Day88.七牛云: 房源图片、用户头像上传
- Leetcode 36. Effective Sudoku (yes, once)
- Relevant calculation of sphere, etc
猜你喜欢

Shell reads the value of the JSON file

Visualization of neural network structure in different frames

Lecture 30 linear algebra Lecture 4 linear equations

Lucene构建索引的原理及源代码分析

ThreadLocal原理

阿里云 MSE 基于 Apache APISIX 的全链路灰度方案实践

API 网关 Apache APISIX 助力雪球双活架构演进

APISIX 助力中东社交软件,实现本地化部署

RT-Thread线程同步与线程通信

Jenkins pipeline's handling of job parameters
随机推荐
03.hello_ rust
How to understand the fast iteration of cloud native database?
How to recover after Oracle delete accidentally deletes table data
The principle and source code analysis of Lucene index construction
如何做好客户成功的底层设计|ToB大师课
internship:术语了解及着手写接口
如何使用 DataAnt 监控 Apache APISIX
【毕业季·进击的技术er】努力只能及格,拼命才能优秀!
算力时代怎么「算」?「算网融合」先发优势很重要!
Data standardization processing
odoo15 Module operations are not possible at this time, please try again later or contact your syste
数据标准化处理
Jenkins pipeline's handling of job parameters
risc-v指令集
Server configuration estimation of core IOT Bluetooth AOA positioning system
压缩与解压缩命令
Troubleshooting of pyinstaller failed to pack pikepdf
Fix the simulator that cannot be selected by flutter once
Racher add / delete node
with torch.no_grad():的使用原因