ehcache
提供三种网络连接策略来实现集群,
rmi
、
jgroup
还有
jms
。这里只说
rmi
方式。同时
ehcache
可以实现多播的方式实现集群。也可以手动指定集群主机序列实现集群,本例应用手动指定。这里说点题外话,本来看着分发包中的原来的例子配置是一件不怎么难的事情,应该很容易就能实现。但是一开始,我是在我的
linux
主机上和我的主操作系统
windows
上实现集群配置。结果反过来弄过去,都没有成功。然后在网上找一些别人的配置经验,竟然都是配置片段,没有完整的实例文件。结果配置半天没成功。但我怀疑是我的
linux
系统有些地方可能没有配置好,于是先不管他。又开启了我的另一个
windows
主机。然后把程序部署上去,竟然一次试验成功。高兴的同时,我得发句话
“
不要把代码片段称作实例,这很不负责任
”
。同时还存在一个问题,在
linux
下没有部署成功的原因有待查明。具体说明:配置
cacheManagerPeerListenerFactory
是配宿主主机配置监听程序,来发现其他主机发来的同步请求配置
cacheManagerPeerProviderFactory
是指定除自身之外的网络群体中其他提供同步的主机列表,用
“|”
分开不同的主机。
下面的例子的测试过程是:主机
B
缓存开启,并从名为
UserCache
的缓存中循环抓取键值为
“key1”
的元素,直到取到,才退出循环。主机
A
缓存启动,并在名为
UserCache
的缓存中放入键值为
“key1”
的元素。显然,如果主机
B
取到的元素,那么就证明同步成功,也就是集群成功。所以在测试过程中先启动主机
B
的测试程序,在启动主机
A
的测试程序。
下面具体说配置文件以及测试程序:
1.
主机
A
的配置文件以及测试源代码
config/ehcache_cluster.xml
Xml
代码
<ehcache
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance
xsi:noNamespaceSchemaLocation
=
"ehcache.xsd"
>
<cacheManagerPeerProviderFactory
class
=
"net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties
="
peerDiscovery
=
manual
,
rmiUrls
=//
192.168.1.254:40000/UserCache
"
/>
<cacheManagerPeerListenerFactory
class
=
"net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties
=
"hostName=192.168.1.126,port=40000,socketTimeoutMillis=120000"
/>
<defaultCache
maxElementsInMemory
=
"10000"
eternal
=
"false"
timeToIdleSeconds
=
"120"
timeToLiveSeconds
=
"120"
over
flowToDisk=
"true"
diskSpoolBufferSizeMB
=
"30"
maxElementsOnDisk
=
"10000000"
diskPersistent
=
"false"
diskExpiryThreadIntervalSecon
ds=
"120"
memoryStoreEvictionPolicy
=
"LRU"
>
<cacheEventListenerFactory
class
=
"net.sf.ehcache.distribution.RMICacheReplicatorFactory"
/>
</defaultCache>
<cache
name
=
"UserCache"
maxElementsInMemory
=
"1000"
eternal
=
"false"
timeToIdleSeconds
=
"100000"
timeToLiveSeconds
=
"100000"
overflowToDisk
=
"false"
>
<cacheEventListenerFactory
class
=
"net.sf.ehcache.distribution.RMICacheReplicatorFactory"
/>
</cache>
</ehcache>
tutorial/UsingCacheCluster
Java
代码
package tutorial;
import java.net.URL;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
public class UsingCacheCluster {
public static void main(String[] args) throws Exception
{
URL url = UsingCacheCluster.class.getClassLoader().getResource(
"config/ehcache_cluster.xml");
CacheManager manager = new CacheManager(url);
//
取得
Cache
Cache cache = manager.getCache("UserCache");
Element element = new Element("key1", "value1");
cache.put(element);
Element element1 = cache.get("key1");
System.out.println(element1.getValue());
}
}
2.
主机
B
上的配置文件以及测试代码
config/ehcache_cluster.xml
Xml
代码
<ehcache
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance
"
xsi:noNamespaceSchemaLocation
=
"ehcache.xsd"
>
<cacheManagerPeerProviderFactory
class
=
"net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties
="
peerDiscovery
=
manual
,
rmiUrls
=//
192.168.1.126:40000/UserCache
"
/>
<cacheManagerPeerListenerFactory
class
=
"net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties
=
"hostName=192.168.1.254,port=40000, socketTimeoutMillis=120000"
/>
<defaultCache
maxElementsInMemory
=
"10000"
eternal
=
"false"
timeToIdleSeconds
=
"120"
timeToLiveSeconds
=
"120"
overflowToDisk
=
"true"
diskSpoolBufferSizeMB
=
"30"
maxElementsOnDisk
=
"10000000"
diskPersistent
=
"false"
diskExpiryThreadIntervalSeconds
=
"120"
memoryStoreEvictionPolicy
=
"LRU"
>
<cacheEventListenerFactory
class
=
"net.sf.ehcache.distribution.RMICacheReplicatorFactory"
/>
</defaultCache>
<cache
name
=
"UserCache"
maxElementsInMemory
=
"1000"
eternal
=
"false"
timeToIdleSeconds
=
"100000"
timeToLiveSeconds
=
"100000"
overflowToDisk
=
"false"
>
<cacheEventListenerFactory
class
=
"net.sf.ehcache.distribution.RMICacheReplicatorFactory"
/>
</cache>
</ehcache>
tutorial/UsingCacheCluster
Java
代码
package tutorial;
import java.net.URL;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
public class UsingCacheCluster {
public static void main(String[] args) throws Exception
{
URL url = UsingCacheCluster.class.getClassLoader().getResource("config/ehcache_cluster.xml");
CacheManager manager = new CacheManager(url);
//
取得
Cache
Cache cache = manager.getCache("UserCache");
while(true) {
Element e = cache.get("key1");
if(e != null) {
System.out.println(e.getValue());
break;
}
Thread.sleep(1000
);
}
}
}
分享到:
相关推荐
**缓存框架 Ehcache 学习笔记** Ehcache 是一个广泛使用的开源 Java 缓存框架,它在处理大量数据的高性能应用中扮演着重要角色。Ehcache 提供了本地内存缓存、磁盘存储以及分布式缓存的能力,使得应用程序能够快速...
### Ehcache学习文档知识点梳理 #### 一、文档概述与目的 - **文档目的**:旨在帮助读者深入了解和掌握Ehcache缓存技术,适用于所有对缓存技术感兴趣的技术人员。 - **文档范围**:覆盖了Ehcache的基础概念、配置...
标题 "Hibernate4 + Ehcache 例子" 暗示了我们将探讨如何在Java应用程序中集成Hibernate4 ORM框架和Ehcache缓存系统。这个例子可能是关于如何提高数据访问性能,通过缓存策略来减少数据库查询的次数。 描述中的链接...
学习Ehcache时,开发者需要理解其配置文件(通常为`ehcache.xml`),其中包含了缓存管理器的配置、缓存的设置等信息。此外,Ehcache与Spring框架的集成也是常见的应用场景,通过Spring的缓存抽象,可以方便地将...
通过这些示例,我们可以学习如何设置Ehcache的分布式特性,例如使用Terracotta服务器进行集群缓存,以及如何处理分布式环境下的缓存一致性问题。 总结来说,Ehcache的监控涉及了多个方面,包括但不限于使用JMX、Web...
在“Hibernate4二级缓存Ehcache案例”中,我们可以学习到如何将Ehcache与Hibernate4结合,实现高效的二级缓存。这不仅可以提高数据读取速度,减少数据库压力,还能优化整体应用性能。通过实践这个案例,开发者可以...
ehcache-2.10.6.jar ehcache jar包供各位开发人员 学习、交流,切勿用于商业用途。
**Ehcache简介** Ehcache是一款开源的Java缓存框架,它被广泛应用于提高应用程序性能,通过存储数据副本以减少对数据库的...通过`Ehcache_Hello`案例,开发者可以逐步学习和实践,从而熟练运用Ehcache进行缓存管理。
【Spring3 Hibernate4 Ehcache整合实例详解】 在Java企业级应用开发中,Spring、Hibernate和Ehcache是三个非常重要的框架和技术。Spring作为轻量级的IoC(Inversion of Control)和AOP(Aspect Oriented ...
通过分析这些源代码,你可以学习如何集成Ehcache到你的应用程序中,以及如何使用反射进行测试和调试。 总结起来,这个例子展示了如何将Ehcache的强大缓存能力与Java反射机制相结合,以提高测试的灵活性和覆盖率。...
EHCache 是一个开源的、高性能的缓存解决方案,广泛应用于Java应用程序中,以提高数据访问的速度和...通过学习这份技术文档和实际操作,开发者可以深入了解EHCache的工作原理,并有效地利用它来优化应用程序的性能。
在本项目中,我们主要探讨的是一个基于Maven构建的Java Web应用,它整合了Spring 4、Hibernate 4、Apache Shiro以及Ehcache等多个关键框架,旨在实现用户角色菜单管理的功能。以下是对这些技术及其集成应用的详细...
通过对 Mybatis-ehcache 1.2.1 的源码学习,开发者可以更好地理解缓存如何与 ORM 框架协同工作,优化数据库交互,同时也能为自定义缓存解决方案提供参考。在实际开发中,结合缓存策略和监控,可以进一步提升系统的...
** Ehcache 学习笔记** Ehcache 是一个开源的 Java 缓存系统,它提供了在应用程序中存储和检索数据的高效方式,特别是在高并发环境下。这个笔记将深入探讨 Ehcache 的核心概念、配置和使用场景,以及如何通过源码...
通过深入学习Ehcache的源码,我们可以理解其内部的工作机制,包括缓存的创建、存储、检索、更新和清除过程,以及如何优化和调整缓存配置以适应不同应用场景。这有助于我们更好地利用Ehcache提升应用程序的性能,并...
Ehcache是一个开源的Java缓存库,广泛用于提高应用程序性能,通过缓存数据来减少对...尽管Ehcache已经发展到了更高级的版本,但学习老版本可以帮助我们更好地理解缓存机制的发展历程,也能为理解和使用新版本打下基础。
【Spring + Ehcache 整合应用详解】 ...通过学习和实践这个示例,开发者可以深入了解Spring与Ehcache的集成,以及如何利用缓存提升应用程序的性能。同时,了解如何管理和配置数据库连接,也是Java开发中的基础技能。
4. **缓存策略**:Ehcache支持多种缓存策略,包括LRU(最近最少使用)、LFU(最不经常使用)和FIFO(先进先出)。这些策略用于决定当缓存达到其最大容量时,哪些元素应该被移除。此外,Ehcache还支持定时过期和手动...
4. Ehcache配置 配置Ehcache主要包括以下几个方面: - 设置缓存大小:内存和硬盘的缓存容量需要预先设定,以防止溢出。 - 过期策略:可以通过设置时间或者访问频率来控制缓存的生命周期。 - 载入策略:定义何时从...
Spring 和 Ehcache 是两个在Java开发中非常重要的框架。Spring 是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-...这个示例Demo是学习和理解Spring与Ehcache集成的一个很好的起点。