首页 > 其他分享 >EhCache的介绍

EhCache的介绍

时间:2022-12-14 15:34:13浏览次数:56  
标签:EhCache 缓存 cache eternal 介绍 maxElementsInMemory true 属性


ehcache是一个非常轻量级的缓存实现,而且从1.2之后就支持了集群,而且是hibernate默认的缓存provider。EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。

 

Ehcache的分布式缓存有传统的RMI,1.5版的JGroups,1.6版的JMS。分布式缓存主要解决集群环境中不同的服务器间的数据的同步问题。

 

使用Spring的AOP进行整合,可以灵活的对方法的返回结果对象进行缓存。

 

CachingFilter功能可以对HTTP响应的内容进行缓存。

 

1、主要特性
     1. 快速.
     2. 简单.
     3. 多种缓存策略
     4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题
     5. 缓存数据会在虚拟机重启的过程中写入磁盘
     6. 可以通过RMI、可插入API等方式进行分布式缓存
     7. 具有缓存和缓存管理器的侦听接口
     8. 支持多缓存管理器实例,以及一个实例的多个缓存区域
     9. 提供Hibernate的缓存实现
     10. 等等

 

2、配置文件介绍(普通缓存) 

1. <ehcache>
2. <!-- 指定一个文件目录,当EHCache把数据写到硬盘上时,将把数据写到这个文件目录下 -->
3. <diskStore path="java.io.tmpdir"/>
4.
5. <!-- 设定缓存的默认数据过期策略 -->
6. <defaultCache
7. maxElementsInMemory="10000"
8. eternal="false"
9. overflowToDisk="true"
10. timeToIdleSecnotallow="0"
11. timeToLiveSecnotallow="0"
12. diskPersistent="false"
13. diskExpiryThreadIntervalSecnotallow="120"/>
14.
15. <!--
16. 设定具体的命名缓存的数据过期策略
17.
18. cache元素的属性:
19. name:缓存名称
20.
21. maxElementsInMemory:内存中最大缓存对象数
22.
23. maxElementsOnDisk:硬盘中最大缓存对象数,若是0表示无穷大
24.
25. eternal:true表示对象永不过期,此时会忽略timeToIdleSeconds和timeToLiveSeconds属性,默认为false
26.
27. overflowToDisk:true表示当内存缓存的对象数目达到了maxElementsInMemory界限后,会把溢出的对象写到硬盘缓存中。注意:如果缓存的对象要写入到硬盘中的话,则该对象必须实现了Serializable接口才行。
28.
29. diskSpoolBufferSizeMB:磁盘缓存区大小,默认为30MB。每个Cache都应该有自己的一个缓存区。
30.
31. diskPersistent:是否缓存虚拟机重启期数据
32.
33. diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认为120秒
34.
35. timeToIdleSeconds: 设定允许对象处于空闲状态的最长时间,以秒为单位。当对象自从最近一次被访问后,如果处于空闲状态的时间超过了timeToIdleSeconds属性值,这个对象就会过期,EHCache将把它从缓存中清空。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限期地处于空闲状态
36.
37. timeToLiveSeconds:设定对象允许存在于缓存中的最长时间,以秒为单位。当对象自从被存放到缓存中后,如果处于缓存中的时间超过了 timeToLiveSeconds属性值,这个对象就会过期,EHCache将把它从缓存中清除。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限期地存在于缓存中。timeToLiveSeconds必须大于timeToIdleSeconds属性,才有意义
38.
39. memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。可选策略有:LRU(最近最少使用,默认策略)、FIFO(先进先出)、LFU(最少访问次数)。
40. >
41. <cache name="CACHE1"
42. maxElementsInMemory="1000"
43. eternal="true"
44. overflowToDisk="true"/>
45.
46. <cache name="CACHE2"
47. maxElementsInMemory="1000"
48. eternal="false"
49. timeToIdleSecnotallow="200"
50. timeToLiveSecnotallow="4000"
51. overflowToDisk="true"/>
52. </ehcache>

 

3、配置文件介绍(分布式缓存) 

     1)RMI集群模式

          A、手工发现

               需要指定节点发现模式peerDiscovery值为manual,rmiUrls设置为另一台服务器的IP、端口和缓存名等信息。

1. <cacheManagerPeerProviderFactory
2. class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
3. properties="peerDiscovery=manual,
4. rmiUrls=//192.168.0.12:4567/oschina_cache|//192.168.0.13:4567/oschina_cache"
5. />

  

          B、自动发现

                需要指定节点发现模式peerDiscovery值为automatic自动,同时组播地址可以指定D类IP地址空间,范围从 224.0.1.0 到 238.255.255.255 中的任何一个地址。

1. <cacheManagerPeerProviderFactory
2. class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
3. properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1,
4. multicastGroupPort=4446, timeToLive=32"
5. />

 

           需要在每个cache属性中加入
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>

1. <cache name="demoCache"
2. maxElementsInMemory="10000"
3. eternal="true"
4. overflowToDisk="true">
5. <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
6. </cache>

         

4、通过编程方式使用EhCache


1. //从classes目录查找ehcache.xml配置文件
2. CacheManager cacheManager = CacheManager.getInstance();
3.
4. //从classes目录查找指定名称的配置文件
5. //CacheManager cacheManager = CacheManager.create(getClass().getResource("/ehcache.xml"));
6.
7. //根据配置文件获得Cache实例
8. Cache cache = cacheManager.getCache("CACHE1");
9.
10. //清空Cache中的所有元素
11. cache.removeAll();
12.
13. //往Cache中添加元素
14. cache.put(new Element("s1", "11111"));
15. cache.put(new Element("s2", "22222"));
16. cache.put(new Element("s3", "33333"));
17.
18. //从Cache中取得元素
19. Element e = cache.get("s3");
20. System.out.println(e.getValue());
21.
22. //卸载缓存管理器
23. cacheManager.shutdown();

 

5、页面缓存

     在web.xml文件中配置过滤器。此处对test_tag.jsp页面进行缓存。

1. <filter>
2. <filter-name>testPageCachingFilter</filter-name>
3. <filter-class>net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter</filter-class>
4. </filter>
5. <filter-mapping>
6. <filter-name>testPageCachingFilter</filter-name>
7. <url-pattern>/test_tag.jsp</url-pattern>
8. </filter-mapping>

  

    在ehcache.xml文件中配置Cache节点。注意:cache的name属性必需为SimplePageCachingFilter。

1. <cache name="SimplePageCachingFilter"
2. maxElementsInMemory="10"
3. overflowToDisk="true"
4. eternal="false"
5. timeToIdleSecnotallow="100"
6. timeToLiveSecnotallow="100"
7. memoryStoreEvictinotallow="LFU" />

标签:EhCache,缓存,cache,eternal,介绍,maxElementsInMemory,true,属性
From: https://blog.51cto.com/u_15912341/5937211

相关文章

  • Ribbon介绍和使用
    Ribbon是Netflix公司提供的一个在SpringCloud中免费使用的客户端负载均衡器组件。它在集群中为各个客户端之间的通信提供支持,可以控制、管理HTTP和TCP客户端的负载均衡。......
  • 2.0FreeRTOS文件介绍
    1、打开FreeRTOSv9.0.0,有两个文件夹FreeRTOS、FreeRTOS-Plus。FreeRTOS-Plus是一些第三方产品,一般用不到  2、打开FreeRTOS有Demo、License、Source Demo:官方为......
  • 网关介绍
    网关指的是一个网络连接到另一个网络的“关口”。在Internet里,网关是一种连接内部网与Internet上其他网络的中间设备,通俗来说,也叫作“路由器”。网关地址是能够理解成内部......
  • 数据智仓功能介绍(四)
    字段设置使用场景介绍字段设置,即在数据智仓中,对输入上一数据处理节点的字段进行显示和隐藏、排序、重命名等操作。操作配置对数据类型的转换,主要用户复杂数据的处理的情况下......
  • 1 推荐系统的介绍
    一、推荐系统是什么定义:根据用户的历史信息和行为,向用户推荐他感兴趣的内容方法:用户1喜欢钢铁侠,绿巨人与钢铁侠近,推荐绿巨人用户1与用户3相近,将用户3喜欢的蝙蝠侠......
  • 三种大数据应用架构介绍
    信息技术的发展,如今数据存储能力上升到了TB、PB级别,企业和政府部门都以各种形式存储了大量的数据,如何快速有效地处理规模大、结构复杂的数据?本文主要介绍大数据的三类应用......
  • 三种大数据应用架构介绍
     信息技术的发展,如今数据存储能力上升到了TB、PB级别,企业和政府部门都以各种形式存储了大量的数据,如何快速有效地处理规模大、结构复杂的数据?本文主要介绍大数据的三类......
  • 正排索引和倒排索引简单介绍
    在搜索引擎中,数据被爬取后,就会建立index,方便检索。  在工作中经常会听到有人问,你这个index是正排的还是倒排的?那么什么是正排呢?什么又是倒排呢?下面是一些简单的介绍。 ......
  • RocketMQ 中Topic、Tag、GroupName基本概念介绍
    本文主要介绍RocketMQ中Topic、Tag、GroupName的概念、设计初衷以及使用方法。一.Topic首先看看官方的定义:    Topic是生产者在发送消息和消费者在拉取消息的类......
  • rate-limit 一款 java 开源渐进式分布式限流框架使用介绍
    项目简介rate-limit是一个为java设计的渐进式限流工具。目的是为了深入学习和使用限流,后续将会持续迭代。特性渐进式实现支持独立于spring使用支持整合sp......