ehcache 分布式缓存

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="ehcache.xsd"
         updateCheck="true" monitoring="autodetect"
         dynamicConfig="true">

    <diskStore path="java.io.tmpdir/TEMP_EHCACHE" />

    <!--JGroups  TCP尚未测试成功-->
    <!--<cacheManagerPeerProviderFactory-->
            <!--class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory"-->
            <!--properties="connect=TCP(bind_addr=172.31.213.62;bind_port=7800):-->
   <!--TCPPING(initial_hosts=172.31.213.62[7800],172.31.213.61[7800];port_range=10;timeout=3000):-->
   <!--VERIFY_SUSPECT(timeout=1500):-->
   <!--pbcast.NAKACK(retransmit_timeout=3000):-->
   <!--pbcast.GMS(join_timeout=5000;-->
   <!--print_local_addr=true)"-->
            <!--propertySeparator="::" />-->

    <!--JGroups  UDP单台服务器模拟俩个端口已测试成功-->
    <cacheManagerPeerProviderFactory class ="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory"
    properties ="connect = UDP(mcast_addr = 231.12.21.132; mcast_port = 45566; ip_ttl = 255;
    mcast_send_buf_size = 150000; mcast_recv_buf_size = 80000):
    PING(timeout = 2000; num_initial_members = 6):
    MERGE2(min_interval = 5000; max_interval = 10000):
    FD_SOCK:VERIFY_SUSPECT(timeout = 1500):
    pbcast.NAKACK( retransmit_timeout = 3000 ):
    UNICAST(timeout = 5000):
    pbcast.STABLE(desired_avg_gossip = 20000):
    FRAG:
    pbcast.GMS(print_local_addr = true)"
    propertySeparator ="::"
    />

    <!--
         name:缓存名称.
         maxElementsInMemory:缓存最大数目
         maxElementsOnDisk:硬盘最大缓存个数.
         eternal:对象是否永久有效,一但设置了,timeout将不起作用.
         overflowToDisk:是否保存到磁盘,当系统当机时
         timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒).仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大.
         timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒).最大时间介于创建时间和失效时间之间.仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大.
         diskPersistent:是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.
         diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小.默认是30MB.每个Cache都应该有自己的一个缓冲区.
         diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒.
         memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存.默认策略是LRU(最近最少使用).你可以设置为FIFO(先进先出)或是LFU(较少使用).
          clearOnFlush:内存数量最大时是否清除.
           memoryStoreEvictionPolicy:可选策略有:LRU(最近最少使用,默认策略)、FIFO(先进先出)、LFU(最少访问次数).
              FIFO,first in first out,这个是大家最熟的,先进先出.
              LFU, Less Frequently Used,就是上面例子中使用的策略,直白一点就是讲一直以来最少被使用的.如上面所讲,缓存的元素有一个hit属性,hit值最小的将会被清出缓存.
              LRU,Least Recently Used,最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存.

              class – 使用net.sf.ehcache.distribution.RMICacheReplicatorFactory

               这个工厂支持以下属性:
               replicatePuts=true | false – 当一个新元素增加到缓存中的时候是否要复制到其他的peers. 默认是true.
               replicateUpdates=true | false – 当一个已经在缓存中存在的元素被覆盖时是否要进行复制.默认是true.
               replicateRemovals= true | false – 当元素移除的时候是否进行复制.默认是true.
               replicateAsynchronously=true | false – 复制方式是异步的(指定为true时)还是同步的(指定为false时).默认是true.
               replicatePutsViaCopy=true | false – 当一个新增元素被拷贝到其他的cache中时是否进行复制指定为true时为复制,默认是true.
               replicateUpdatesViaCopy=true | false – 当一个元素被拷贝到其他的cache中时是否进行复制(指定为true时为复制),默认是true.

      -->

    <defaultCache
            eternal="false"
            maxElementsInMemory="1000"
            overflowToDisk="false"
            diskPersistent="false"
            timeToIdleSeconds="1000"
            timeToLiveSeconds="1000"
            memoryStoreEvictionPolicy="LRU" >
        <cacheEventListenerFactory
            class ="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"
            properties ="replicateAsynchronously = true,replicatePuts = true,
    replicateUpdates = true,replicateUpdatesViaCopy = false,
    replicateRemovals = true"/>
        <bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsBootstrapCacheLoaderFactory"/>
    </defaultCache>

    <cache name ="activity"
           maxElementsInMemory="100000"
           overflowToDisk="false"
           diskPersistent="false"
           timeToIdleSeconds="1000"
           timeToLiveSeconds="1000"
           memoryStoreEvictionPolicy="LRU" >
    <cacheEventListenerFactory
            class ="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"
    properties ="replicateAsynchronously = true,replicatePuts = true,
    replicateUpdates = true,replicateUpdatesViaCopy = false,
    replicateRemovals = true"/>
        <bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsBootstrapCacheLoaderFactory"/>
    </cache>

    <cache name ="goods"
           maxElementsInMemory="100000"
           overflowToDisk="false"
           diskPersistent="false"
           timeToIdleSeconds="1000"
           timeToLiveSeconds="1000"
           memoryStoreEvictionPolicy="LRU" >
    <cacheEventListenerFactory
            class ="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"
    properties ="replicateAsynchronously = true,replicatePuts = true,
    replicateUpdates = true,replicateUpdatesViaCopy = false,
    replicateRemovals = true"/>
        <bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsBootstrapCacheLoaderFactory"/>
    </cache>

    <cache name ="properties"
           maxElementsInMemory="100000"
           overflowToDisk="false"
           diskPersistent="false"
           timeToIdleSeconds="1000"
           timeToLiveSeconds="1000"
           memoryStoreEvictionPolicy="LRU" >
    <cacheEventListenerFactory
            class ="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"
    properties ="replicateAsynchronously = true,replicatePuts = true,
    replicateUpdates = true,replicateUpdatesViaCopy = false,
    replicateRemovals = true"/>
        <bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsBootstrapCacheLoaderFactory"/>
    </cache>

    <cache name ="cart"
           maxElementsInMemory="100000"
           overflowToDisk="false"
           diskPersistent="false"
           timeToIdleSeconds="1000"
           timeToLiveSeconds="1000"
           memoryStoreEvictionPolicy="LRU" >
    <cacheEventListenerFactory
            class ="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"
    properties ="replicateAsynchronously = true,replicatePuts = true,
    replicateUpdates = true,replicateUpdatesViaCopy = false,
    replicateRemovals = true"/>
        <bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsBootstrapCacheLoaderFactory"/>
    </cache>








    <!--以下为RMI配置-->

    <!--缓存成员发现工厂,管理cacheManager对象 -->
    <!--<cacheManagerPeerProviderFactory-->
            <!--class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"-->
            <!--properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1, multicastGroupPort=4446,-->
        <!--multicastPacketTimeToLive=1" />-->

    <!--针对cacheManager事件的监听,这里只介绍properties中的hostName、port属性,
         这里我忽略了hostName的配置,查看他们的源码发现如果不填写hostName,
        他们就会通过JDK中的InterAddress.getLocalHost().getHostAddress()获取本机的ip地址,
        所以在这里我没有填写hostName的配置,方便部署到多台硬件服务器上.
        但是如果一台已经服务器上有多个网卡,这里一定要指定hostName的IP,原因参考InterAddress源码.
        post这里我指定的时40001,如果这里不填写port配置,ehcache就会通过ServerSocket的getLocalPort获取一个本机没有被占用的端口 -->
    <!--<cacheManagerPeerListenerFactory-->
            <!--class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"-->
            <!--properties="port=40001" />-->

    <!--<defaultCache maxElementsInMemory="10000" eternal="true"-->
                  <!--overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="0"-->
                  <!--diskPersistent="false" diskExpiryThreadIntervalSeconds="120">-->
        <!--<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true,replicateUpdatesViaCopy= false, replicateRemovals= true " />-->
    <!--</defaultCache>-->

    <!--<cache name="activity" maxElementsInMemory="100000" eternal="true"-->
           <!--overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="0"-->
           <!--diskPersistent="false" diskExpiryThreadIntervalSeconds="120">-->
        <!--<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true,replicateUpdatesViaCopy= false, replicateRemovals= true " />-->
    <!--</cache>-->

    <!--<cache name="properties" maxElementsInMemory="10000" eternal="true"-->
           <!--overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="0"-->
           <!--diskPersistent="false" diskExpiryThreadIntervalSeconds="120">-->
        <!--<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true,replicateUpdatesViaCopy= false, replicateRemovals= true " />-->
    <!--</cache>-->

    <!--<cache name="goods" maxElementsInMemory="100000"-->
           <!--eternal="true" overflowToDisk="true" timeToIdleSeconds="0"-->
           <!--timeToLiveSeconds="0" diskPersistent="false"-->
           <!--diskExpiryThreadIntervalSeconds="120">-->
        <!--<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true,replicateUpdatesViaCopy= false, replicateRemovals= true " />-->
    <!--</cache>-->

    <!--<cache name="cart" maxElementsInMemory="100000"-->
           <!--eternal="true" overflowToDisk="true" timeToIdleSeconds="0"-->
           <!--timeToLiveSeconds="0" diskPersistent="false"-->
           <!--diskExpiryThreadIntervalSeconds="120">-->
        <!--<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true,replicateUpdatesViaCopy= false, replicateRemovals= true " />-->
    <!--</cache>-->
</ehcache>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值