`

spring ehcache 集群配置

 
阅读更多

本篇文章是个人实践证明的,下面是步骤:

      1 在spring的配置文件中启用spring对ehcache的注解, 并声明cacheManager,指明ehcache的配置文件路径:

     

    <!-- spring cache 配置 -->
    <!-- 启用缓存注解功能,这个是必须的,否则注解不会生效,另外,该注解一定要声明在spring主配置文件中才会生效 -->
    <cache:annotation-driven cache-manager="cacheManager"/>

    <!-- ===========================spring cache 基于 ehcache 的实现============================= -->
    <!-- cacheManager工厂类,指定ehcache.xml的位置 -->
    <!-- EhCache library setup -->
    <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
          p:configLocation="classpath:ehcache/ehcache.xml"/>

    <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"
          p:cacheManager-ref="ehcache"/>

    <cache:annotation-driven />

  

       2 配置ehcache配置文件:

        

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">
    <!-- accountservice 缓存配置 -->
    <!--EHCache分布式缓存集群环境配置-->
    <!--rmi手动配置-->
    <cacheManagerPeerProviderFactory class= "net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
                                     properties="peerDiscovery=manual,rmiUrls=//localhost:40000/user"/>

    <cacheManagerPeerListenerFactory
            class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
            properties="hostName=localhost,port=40001, 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="user"
           maxElementsInMemory="1000"
           eternal="false"
           timeToIdleSeconds="100000"
           timeToLiveSeconds="100000"
           overflowToDisk="false">
        <cacheEventListenerFactory
                class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
    </cache>
</ehcache>

    使用RMI的方式在集群的server进行缓存复制

 

   3 在代码中使用注解的方式进行缓存声明:

     

    @Cacheable(value = "user", key = "'all'")
    public List<SerializableJSONObject> listMessage () {
        String sql = "select * from prc_mbl_msg";
        System.out.printf("我在测试缓存!!!");
        return this.baseDao.sqlQueryResult(sql, new Object[]{});
    }

    value知道缓存的名称,key是缓存对应的key

 

   清除缓存:

   

    @CacheEvict(value = "user", key = "'all'")
    public void removeMessageCache () {
        System.out.printf("我再去除测试!!!");
    }

  

    4 缓存测试发现的问题

       被缓存的对象必须实现Serializable接口,如果缓存的为子类,子类实现了Serializable接口,父类没有实现Serializable接口,那么缓存复制的时候会把父类里面的属性复制丢失!

   

    5 关于所需要的jar包

      

        <dependency>
            <groupId>net.sf.ehcache</groupId>
            <artifactId>ehcache</artifactId>
            <version>2.7.0</version>
        </dependency>

     maven中央仓库中最高的版本为2.8.3,在tomcat 7下使用最高版本的jar会报错,提示DiskStore这个类中缺少一个内部类,我看了jar包的源码,2.8版本确实没有对应的内部类,使用2.7版本的就正常了!

分享到:
评论

相关推荐

    Spring Boot 2.x基础教程:使用EhCache缓存集群.docx

    为了解决这个问题,我们需要配置EhCache缓存集群,以确保数据更新能在各个进程中同步。以下是如何使用EhCache实现缓存集群的详细步骤: 首先,确保缓存对象是可序列化的。在上述例子中,`User`实体需要实现`...

    ehcache集群

    1. **负载均衡**:Ehcache集群可以将数据分布在多个节点上,从而将负载分散到各个服务器,降低单个节点的压力。 2. **高可用性**:如果一个节点失效,其他节点仍然可以提供服务,确保系统连续运行。 3. **数据冗余**...

    spring ehcache

    在 Spring 中配置分布式缓存需要额外的设置,如配置集群地址和端口。 7. **性能优化**:理解 Ehcache 的性能调优是至关重要的,包括内存管理、缓存策略(如 LRU、LFU 等)、缓存加载策略等。 8. **工具支持**:...

    Ehcache 整合Spring 使用页面、对象缓存

    - **与Spring、Hibernate的集成**:Ehcache可以非常容易地与Spring和Hibernate框架集成,简化缓存的配置和使用。 #### 二、准备工作 在开始使用Ehcache之前,需要先完成以下准备工作: 1. **下载JAR包**: - **...

    Ehcache整合Spring使用页面、对象缓存

    3. 配置Spring:在Spring的配置文件中启用缓存支持,并指定Ehcache为缓存管理器。 ```xml &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...

    ehcache配置使用详解

    集群配置通常涉及以下步骤: - 定义集群模式,如复制或分区。 - 设置集群通信协议和端口。 - 配置数据一致性策略,如写入策略和故障恢复机制。 - 调整缓存过期策略,以适应网络延迟和节点状态变化。 总之,ehcache...

    Spring+ehcache整合

    3. **配置Spring**:在Spring的配置文件(如`applicationContext.xml`)中,添加Ehcache的bean配置,以使Spring能够管理Ehcache: ```xml &lt;bean id="cacheManager" class="org.springframework.cache.ehcache....

    Ehcache分布式缓存与其在SpringBoot应用

    JGROUP是一个用于构建可靠集群通信的库,可以提供组成员资格、故障检测、传输协议等多种功能,使得Ehcache能够在多个节点之间共享和同步缓存数据。Ehcache的分布式特性允许在大型系统中进行负载均衡,提高应用性能,...

    37. Spring Boot集成EHCache实现缓存机制【从零开始学Spring Boot】

    Spring Boot简化了配置过程,使得我们可以快速地将EHCache引入到我们的应用中,从而提高应用程序的性能,减少对数据库或其他资源的重复访问。下面,我们将会详细讲解相关知识点。 首先,了解**Spring Boot**。...

    EhCache-Cluster-Tester.zip_cluster_cluster html网页_ehcache_java

    在“EhCache-Cluster-Tester.zip”这个压缩包中,包含了一个关于EhCache集群配置和测试的实例,这对于理解如何在分布式环境中使用EhCache至关重要。 EhCache的集群功能允许多个节点共享同一份缓存数据,实现高可用...

    BoneCP连接池和Ehcache注解缓存整合到Spring

    3. **分布式缓存**:通过 Terracotta 平台,Ehcache 可以实现跨服务器的分布式缓存,适合大规模集群环境。 4. **注解支持**:在Spring中,可以通过`@Cacheable`、`@CacheEvict`等注解方便地进行缓存操作。 在Spring...

    Ehcache分布式缓存与其在spring中的使用

    #### 四、Ehcache分布式缓存集群配置 为了实现Ehcache在分布式环境下的缓存一致性,可以采用不同的网络连接策略: - **RMI**:远程方法调用,适用于小型或中型应用。 - **JGroups**:一种组通信库,适用于大型集群...

    EHCache 配置说明

    - 配置 Spring 参数:在 Spring 的配置文件中,声明并配置 Ehcache 的 Bean,以便 Spring 管理 Ehcache。 4.7. 客户端使用 客户端可以通过 Spring 注入的 Cache Manager 实例,透明地进行缓存操作,提高代码的...

    ehcache-spring

    例如,通过集群配置实现缓存的高可用性,或者使用 Terracotta Server 作为分布式缓存解决方案。 **性能优化和最佳实践** 1. 合理设置缓存大小:根据应用的实际情况,调整缓存的最大容量,避免因缓存溢出导致的问题...

    Spring基于注解的缓存配置--EHCache AND OSCache

    本篇文章将深入探讨如何使用注解配置Spring与EHCache或OSCache这两个流行的Java缓存解决方案。以下是对该主题的详细阐述: 1. **Spring缓存抽象** Spring 3.1引入了一种统一的缓存抽象,它允许开发者在不关心具体...

    ehcache-2.10.3-distribution.tar.gz

    1. **ehcache.xml**: 这是Ehcache的配置文件,用于定义缓存的行为和设置。开发者可以在这里指定缓存的大小、过期策略、缓存区域等参数。XML结构允许以结构化的方式配置复杂设置。 2. **ehcache.xsd**: 这是一个XML ...

Global site tag (gtag.js) - Google Analytics