Ehcache介绍

Ehcache如何支持分布式缓存?在分布式环境下,如何保证缓存的一致性?Ehcache的缓存过期和缓存失效机制。Ehcache如何与Spring框架集成?如何配置和使用Ehcache? 上述示例中定义了一个默认的缓存,其最大内存元素数量为10000,非永久,空闲时间为120秒,生存时间为120秒,当内存满时溢出到磁盘,磁盘存储不是持久的,磁盘过期线程间隔时间为120秒,内存存储的驱逐策略为LRU(最近最少使用)。需要注意的是,Ehcache的配置和使用可能会因版本和项目需求的不同而有所差异,因此在实际使用中,你可能需要查阅相关的官方文档或参考其他资源来获取更详细和准确的信息。通过合理设置过期时间,可以确保缓存中的数据始终是最新的,并减少因数据过时而导致的错误或不一致。 阅读详情

1.Overview

Ehcache从 Hibernate 发展而来,逐渐涵盖了Cahce界的全部功能,是目前发展势头最好的一个项目。

标准缓存

分布式缓存(基于RMI/JGroups/JMS)

URL,页面片段缓存(类似OSCache的相关部分)

中央缓存服务器(类似Memcached)

2.基本功能与配置

Ehcache的基本功能,可以从配置文件中学习。

总的来说,缓存与HashMap的最大不同,就是缓存设想内存是有限的,缓存的时效性也是有限的,所以可以设定内存数量的大小,可以执行失效算法 ,可以在内存满了的时候,按照最少访问等算法将缓存直接移除或切换到硬盘上。

另外注意,ehcache的CacheManager本身有一定的默认值。而在没有指定ehcache.xml的情况下, 会使用ehcache.jar里自带的ehcache_failsafe.xml,

2.1 对象在内存中的最大数量

因为内存是有限的,所以必须用maxElementsInMemory(必填项)设置每类对象在内存中的最大数量。ehcache_failsafe.xml 中为10000。

2.2 到达内存中最大量时的过期/移出算法

过期算法: 如果缓存已经失效,人道毁灭之。失效算法由3个参数组成:

eternal(必填项):如果为true,则永不过期,忽略后两个参数的设置。ehcache_failsafe.xml 为false.

timeToIdleSeconds: 空闲无访问时间,默认为0,永不过时。ehcache_failsafe.xml 设为120秒。

timeToLiveSeconds: 空闲无访问时间,默认为0,永不过时。ehcache_failsafe.xml 设为120秒。

移出算法:如果经过失效算法后,还是有很多有效的缓存,则执行清除算法。清除算法由两个参数组成:

memoryStoreEvictionPolicy: 默认为LRU(最近最少访问),另有先进先出(FIFO),最少访问次数(LFU)

overflowToDisk(必填项) 为true,则将清除出来的缓存持久化到磁盘,否则人道毁灭之。

2.3 储存到硬盘

maxElementsOnDisk,默认为0,无限多。ehcache_failsafe.xml为10000000。

diskExpiryThreadIntervalSeconds:使用过期算法清除磁盘中失效对象的间隔,默认为120秒。 

diskSpoolBufferSizeMB ,默认为30M。

2.4  重启时缓存持久化

diskPersistent 当应用重启时,可将缓存先持久化到硬盘,重启后再行载入,节省大量的重新从数据库载入。但只适合那些缓存不怎么变化,或者有特殊机制保证重启后应用能接收到重启这段时间里缓存变化信息的情况。

3. 分布式缓存

Ehcache 有传统的RMI,1.5版的JGroups,1.6版的JMS,随大流还是先用RMI的好些。

3.1设置自身

这里设置在localhost的40001端口上侦听。如果要互相同步的CahceManager不都在一台机器上的话,hostName应该是实际IP。)

  <cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" 
 properties="hostName=localhost, port=40001,socketTimeoutMillis=2000" />

3.2 设置需要同步的对方服务器及缓存对象,

这里设置与40002端口上的CacheManager同步User与Role对象,如果还有第三台机器,则继续用|分割,继续往下列。同理,在 40002端口上的cacheManager的ehcache.xml里,就需要配置与400001,40003的互通)

也有自动发现,广播的简单配法,但对广播天然恐惧,还是辛苦一点一个个静态列表配置文件的写了,虽然有点烦。

<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" 
 properties="peerDiscovery=manual, 
  rmiUrls=//localhost:40002/org.springside.examples.miniweb.entity.user.User|//localhost:40002/org.springside.examples.miniweb.entity.user.Role"/> 

3.3 缓存对象的配置

往每一个需要缓存的对象加入子对象cacheEventListenerFactory

   <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" 
     properties="replicateAsynchronously=true, 
     replicatePuts=true, 
     replicateUpdates=true, 
     replicateUpdatesViaCopy=true, 
     replicateRemovals=true 
     asynchronousReplicationIntervalMillis=<number of milliseconds"> 
     propertySeparator="," />

replicateAsynchronously  对象同步是否异步完成,默认为true。如果比较紧急就设为false。

在一致性时间性要求不强的时候,设为异步可大大提供性能,因为它是异步立即返回的,而且可以批量提交。

replicateUpdatesViaCopy 是否将对象变更复制到所有节点,还是只是发送一个失效信息,让对方该缓存失效,当对方需要该缓存时重新计算载入。

默认为true。鉴于对象复制的消耗挺大的,又有锁的问题,而且对方也未必需要该对象,所以此属性建议设为false。如果业务上真的需要设为true时,就可考虑使用Terracotta了。

replicatePuts、replicateUpdates、replicateRemovals  增删改是否同步,默认都为true。但因为我们前面选择了失效算法,所以replicatePuts 要设为false。

所以我们一般的设置如下:

 <cache name="org.springside.examples.miniweb.entity.user.User" maxElementsInMemory="500" overflowToDisk="true" 
 eternal="true"> 
 <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" 
  properties="replicateAsynchronously=false,replicatePuts=false,replicateUpdatesViaCopy=false" /> 
 </cache>

3.4 Shutdown

在分布式环境或持久化硬盘时,需要调用CacheManager的shutdown操作,Hibernate会自动shutdown它自己的cacheManager,如果在hibernate之外使用,你需要增加:

    <listener> 
     <listener-class>net.sf.ehcache.constructs.web.ShutdownListener</listener-class> 
   </listener>

4.JMS式并发同步

与其他同步方式相比,JMS同步支持了非Cache节点的程序对Cahce的修改。

在分布式缓存中有一种需求:应用节点更改数据库数据后,需要通知所有缓存集群的节点,通常大家都是自行通过JMS实现的,而Ehcache的JMS Replicator提供了一种标准的方案,提供PUT,REMOVE,REMOVE_ALL的标准操作。



【5G全网建设】Option3X和Option2模式建安市、兴城市和四水市核心网、承载网网络设计与部署 拓扑规划: Option 3X网络拓扑图规划 Option 2网络拓扑图规划 设备部署: 建安市核心网 建安市承载中心机房 建安市骨干汇聚机房 建安市3区汇聚机房 建安市C站点无线机房 兴城市核心网 兴城市承载中心机房 兴城市骨干汇聚机房 兴城市2区汇聚机房 兴城市B站点无线机房 数据配置: 建安市核心网 建安市承载中心机房 建安市骨干汇聚机房 建安市3区汇聚机房 建安市C站点无线机房 兴城市核心网 兴城市承载中心机房 兴城市骨干汇聚机房 兴城市2区汇聚机房 兴城市B站点无线机房 业务调试 阅读详情

相关推荐

COLMAP生成MVSNet数据集

COLMAP生成MVSNet数据集

qq_43307074的博客 5637

Ehcache的介绍

1.Overview Ehcache从 Hibernate 发展而来,逐渐涵盖了Cahce界的全部功能,是目前发展势头最好的一个项目。 标准缓存 分布式缓存(基于RMI/JGroups/JMS) URL,页面片段缓存(类似OSCache的相关部分) 中央缓存服务器(类似Memcached) 2.基本功能与配置 Ehcache的基本功能,可以从配置文件中学习。 ...

weixin_33859665的博客 160

10bit SAR ADC电路:200多页设计与仿真文档,附gpdk045工艺与testbench,可直接导入Virtuoso仿真,含以太网、PLL电路例程及进阶ADC

拥有超过200页的详细设计和仿真文档,它以gpdk045工艺为基础,testbench均可直接导入virtuoso仿真,为我们提供了一个全面了解ADC电路设计的绝佳机会。通过对10bit SAR ADC电路的详细解析,我们不仅了解了其设计背后的原理和实现方法,还体会到了数字与模拟技术的交融之美。这个SAR ADC的结构采用了经典的电荷重分配架构。一个10bit SAR ADC电路,有200多页详细的设计和仿真文档,附带对应的gpdk045工艺,testbench都有,可直接导入virtuoso仿真。

OMyAVKmGPBOF的博客 1333

Ehcache优缺点以及分布式详解

ehcahe的介绍 EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持RE...

weixin_34347651的博客 464

python后端的支付宝小程序用户认证问题(alipay-sdk-python、pycrypto无法安装)

python后端的支付宝小程序用户认证问题(alipay-sdk-python、pycrypto无法安装) 写在前面 事先说明,本人不是大佬,我只是在不断探索的途中找到了解决这个问题的方法,之前在网上搜索的时候没有看到相关文章,所以就来简单讲一下。 正文 借着蚂蚁金服小程序大赛开通了支付宝小程序个人开发者,尝试将一个微信小程序的项目移植到支付宝上,支付宝对于用户唯一id的获取比微信要复杂很多,微信...

weixin_43102379的博客 3643

Python读取ECMWF grib数据;Anaconda配置eccodes和cfgrib环境及安装过程

python读取grib数据,eccodes,cfgrib安装。

qq_36714629的博客 2244

Ehcache分布式缓存实现

开篇ehcache提供三种网络连接策略来实现集群,rmi,jgroup还有jms。同时ehcache可以可以实现多播的方式实现集群,也可以手动指定集群主机序列实现集群。Ehcache支持的分布式缓存支持有三种RMI,JGroups,JMS,这里介绍下MRI和JGrpups两种方式,Ehcache使用版本为1.5.0. 环境为两台机器 server1 ip:192.168.2.154,serv

Q 1万+

百度智能云ASR实战:5分钟搞定Unity语音转文字(含完整代码)

本文详细介绍了如何在Unity中集成百度智能云ASR服务,实现高效的语音转文字功能。从环境配置、音频处理到服务端通信,提供完整代码示例和实战优化技巧,帮助开发者快速实现语音交互功能,适用于游戏开发、XR应用等场景。

ujm56789012的博客 215

Ehcache集群配置

添加端口 sudofirewall-cmd--zone=public--add-port=18080/tcp--permanent 删除端口 sudofirewall-cmd--zone=public--remove-port=18080/tcp--permanent 生效配置 sudofirewall-cmd--reload 查看端口 sudofirew...

你好陌生人的博客 1417

信创那些事儿——Spring Boot中集成东方通中间件(TongWeb)

在Spring Boot中集成东方通中间件(如TongWeb作为Servlet容器)通常涉及几个步骤,但需要注意的是,TongWeb本身是一个独立的Java EE应用服务器,而不是像Tomcat那样可以直接嵌入到Spring Boot应用中的中间件。因此,集成通常意味着将Spring Boot应用打包为WAR文件并部署到TongWeb服务器上。

来北欧写代码 6491

syslog RFC5424协议详解

RFC5424协议解读与报文分析。

chenwr2018的博客 6690

ehcache怎么删除缓存_Ehcache的详细介绍

一、简介Ehcache是一个用Java实现的使用简单,高速,实现线程安全的缓存管理类库,ehcache提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的cache管理方案。同时ehcache作为开放源代码项目,采用限制比较宽松的Apache License V2.0作为授权方式,被广泛地用于Hibernate, Spring,Cocoon等其他开源系统。Ehcache 从 Hibernat...

weixin_39624367的博客 3426

为JETSON TX2开发板部署YoloV5

参考资料一:nvidia为JETSON Tx2编译的pytorch 参考资料二:Jetson软件包下载 参考资料三:Tx2安装工具的使用 参考资料四: Jetson烧录工具 参考资料五: B站下载的行人视频 一、升级TX2系统版本到最新版(JetPack4.6) 我拿到的板子的版本太低了,在工作的过程中会有很多问题,因此要先升级到最新版 下载参考资料四中的烧录工具,在Ubuntu18.04中安装,只能,必须,一定是Ubuntu18.04 安装完成后使用非root用户启动SDK Manger,登录Nvi.

贱贱的剑 5887

EhCache介绍

ehcache是一个非常轻量级的缓存实现,而且从1.2之后就支持了集群,而且是hibernate默认的缓存provider。EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。   Ehcache的分布式缓存有传统的RMI,1.5版的JGroups,1.6版的JMS。分布式缓存主要解决集群环境中不同的服务器间的数据的...

程序员的天堂 389

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

一文详细介绍Ehcache

缓存数据的生存时间(TTL),也就是一个元素从构建到消亡的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是 0 就意味着元素可以停顿无穷长的时间。表明所修饰的方法是可以缓存的:当第一次调用这个方法时,它的结果会被缓存下来,在缓存的有效时间内,以后访问这个方法都直接返回缓存结果,不再执行方法中的代码段。首先使用注解标记方法,相当于定义了切点,然后使用 Aop 技术在这个方法的调用前、调用后获取方法的入参和返回值,进而实现了缓存的逻辑。:这个参数设置 DiskStore(磁盘缓存)的缓存区大小。

通往IT大道的专栏 1380

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ehcache 手动刷新缓存_Ehcache的详细介绍

一、简介Ehcache是一个用Java实现的使用简单,高速,实现线程安全的缓存管理类库,ehcache提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的cache管理方案。同时ehcache作为开放源代码项目,采用限制比较宽松的Apache License V2.0作为授权方式,被广泛地用于Hibernate, Spring,Cocoon等其他开源系统。Ehcache 从 Hibernat...

weixin_36472741的博客 4016

【存储中间件】JVM缓存EhCache(一):介绍、基本使用、Springboot整合EhCache

在查询数据的时候,数据大多来自数据库,咱们会基于SQL语句的方式与数据库交互,数据库一般会基于本地磁盘IO的形式将数据读取到内存,返回给Java服务端,Java服务端再将数据响应给客户端,做数据展示。但是MySQL这种关系型数据库在查询数据时,相对比较慢,因为有磁盘IO,有时没命中索引还需要全盘扫描。在针对一些热点数据时,如果完全采用MySQL,会存在俩问题。第一个MySQL相对很脆弱,肯能会崩,第二个MySQL查询效率慢。会采用缓存。

专注上位机开发、机器视觉、机器学习、嵌入式软硬件开发 1万+

java 使用ehcache,ehcache的介绍和使用,ehcache介绍使用

ehcache的介绍和使用,ehcache介绍使用ehcache结合springcache主要注解使用:@Cacheable,@CacheEvict,@CachePut在语法和配置等方面的使用 可以参考以下网站:1、非常详细的spring mvc和cache的使用博客(注释驱动的 Spring cache 缓存介绍)http://www.ibm.com/developerworks/cn/ope...

weixin_39729272的博客 146

ehcache 介绍

一.介绍与应用场景    ehcache是一开源缓存工具,其许可证为Apache License, Version 2.0,非常友好的许可。在sourceforge.net 上可找到它的最新版本。缓存应用在多个领域并发挥作用,ehcache可应用于数据库访问缓存,安全认证缓存,web缓存,soap 和 RESTFul 服务缓存,应用程序持久对象缓存以及分布式缓存。 二.架设开发

nuoyan666的专栏 929

Ehcache 3 示例项目介绍

Ehcache 3 示例项目介绍 Ehcache 3 是一个高性能、分布式缓存解决方案,广泛应用于各种企业级应用中。本项目 Ehcache 3 Samples 是一个开源项目,旨在提供 Ehcache 3 的使用示例和教程,帮助开发者更好地理解和应用 Ehcache 3 的功能。该项目主要使用 Java 编程语言开发。 项目的核心功能 本项目包含以下几个核心示例模块: basic: 展示了 Eh...

gitblog_00988的博客 424

Ehcache相关介绍

参考:https://www.cnblogs.com/wangwiz/articles/7691381.htmlhttps://blog.youkuaiyun.com/vbirdbest/article/details/72763048项目中一般使用到多级缓存,就是多层缓存(二级缓存的比较多),目的都是为了减轻数据库压力。查找数据时,先在一级缓存中查找,找不到去二级,以此类推……,最后再查询数据库。一般二级缓...

wangpeng322的博客 318

Ehcache资料介绍

Ehcache在很多项目中都出现过,用法也比较简单。一般的加些配置就可以了,而且Ehcache可以对页面、对象、数据进行缓存,同时支持集群/分布式缓存。如果整合Spring、Hibernate也非常的简单,Spring对Ehcache的支持也非常好。EHCache支持内存和磁盘的缓存,支持LRU、LFU和FIFO多种淘汰算法,支持分布式的Cache,可以作为Hibernate的缓存插件。同时它也能

步春良 1368

EHCache详细使用介绍

在开发高并发量,高性能的网站应用系统时,缓存Cache起到了非常重要的作用。本文主要介绍EHCache的使用,以及使用EHCache的实践经验。    笔者使用过多种基于Java的开源Cache组件,其中包括OSCache、JBossCache、EHCache。OSCache功能强大,使用灵活,可用于对象缓存、Filter缓存以及在JSP中直接使用cache标签。笔者在最近的使用过程中发现,在并发...

天道酬勤 327

EHcache 介绍

1.EhCache是什么     EhCache是Hibernate的二级缓存技术之一,可以把查询出来的数据存储在内存或者磁盘,节省下次同样查询语句再次查询数据库,大幅减轻数据库压力; 2.EhCache的使用注意点     当用Hibernate的方式修改表数据(save,update,delete等等),这时EhCache会自动把缓存中关于此表的所有缓存全部删除掉(这样能达到同步)。

彻底拆分,一切可控! 1152

java ehcache使用_EhCache使用详细介绍

Ehcache中不仅可以用配置文件来配置缓存,而在代码中也可以实现同样的功能。CacheManager singletonManager = CacheManager.create();Cache memoryOnlyCache = new Cache(“testCache”, 50000, false, false, 8, 2);Cache test = singletonManager.get...

weixin_42300418的博客 1036
上一篇: Ehcache缓存配置
下一篇: EhCache参数及磁盘持久化加载
codepython
博客等级 码龄20年 125粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值