Ehcache 缓存(二)xml配置相关

如果没有配置ehcache.xml文件,ehcache-failsafe.xml将作为默认的ehcache配置。

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

a). diskStore(磁盘存储)元素是可选的。当你为任意缓存开启了overflowToDisk或者diskPersistent属性时,  它就必须配置。如果没配置,那么会出现提示信息并默认使用java.io.tmpdir作为存储地址;
  diskStore只有一个属性-"path"。它是.data和.index文件被创建时的目录路径;
  如果path是一个java系统属性,那么在运行的虚拟机中取而代之的是它真实的路径值。
  下列属性会被转化:
    * user.home - User's home directory
    * user.dir - User's current working directory
    * java.io.tmpdir - Default temp file path
    * ehcache.disk.store.dir - 你通常会在命令行指定的系统属性,比如:
java -Dehcache.disk.store.dir=/u01/myapp/diskdir ...
   也可以在该属性下指定子目录,比如:java.io.tmpdir/one

2. <cacheManagerEventListenerFactory class="" properties=""/>

a) .CacheManagerEventListenerFactory可创建一个CacheManagerPeerProvider(当从CacheManager添加或删除缓存时,它会收到通知)。
  CacheManagerEventListenerFactory的属性:
  * class - 工厂类名全称
  * properties -  以逗号分隔针对工厂配置的属性

 b) .CacheManager事件监听器的类名需为全称。
这些事件包括增加一个缓存、删除一个缓存。
回调到监听器的方法有同步和非同步的。而作为实现者的职责,安全的处理潜在的性能和线程安全取决于监听器在做什么。如果没有指定工厂类,那么监听器也不会创建。它是不存在默认值的。

3.(分布式操作可启用)

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

   a) .CacheManagerPeerProviderFactory来创建CacheManagerPeerProvider,在集群中,它可以发现其他的CacheManagers。
   CacheManagerPeerProviderFactory的属性:
   * class - 工厂类全称
   * properties  - 以逗号分隔针对工厂配置的属性

   b).Ehcache 配备了内置的基于RMI的通讯系统,该系统有两种来发现参与集群的CacheManager的方式:
   * 自动的,使用多播组。它可以自动发现同类manager并且探测到它们进入或离开该组的任何变化。
   * 手动的,使用使用手动的rmiURL配置。在配置是要提供同类manager的硬编码列表!
   b1).可按照下面示例配置自动模式:
   
<cacheManagerPeerProviderFactory
          class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
          properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1,
          multicastGroupPort=4446, timeToLive=32"/>

   可用的属性有:
      * peerDiscovery (必须的) - 指定为自动模式
      * multicastGroupAddress (必须的) - 指定一个可用的多播组地址
      * multicastGroupPort (必须的) - 为多播检测信号交通指定一个专用的端口
      * timeToLive - 一个0-255之间的值,来决定数据包将传播多远
    按照惯例,会有如下一些限制:
      0   - 同一主机
      1   - 位于同一子网
      32  - 相同的站点
      64  - 同一区域
      128 - 同一大陆
      255 - 无限制
   b2). 可按照下面示例配置手动模式:
     
<cacheManagerPeerProviderFactory class=
            "net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
              properties="peerDiscovery=manual,rmiUrls=//server1:40000/sampleCache1|//server2:40000/sampleCache1
                          | //server1:40000/sampleCache2|//server2:40000/sampleCache2"/>

    可用的属性有:
     * peerDiscovery(必须的) - 指定为手动模式
     * rmiUrls(必须的) - 在form中,形式以管道分隔的rmiURL列表 //hostname:port

4.(分布式操作可启用)

<cacheManagerPeerListenerFactory
            class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"/>

  CacheManagerPeerListenerFactory可用来创建CacheManagerPeerListener(在集群中可监听来自高速缓存复制器的消息)
  CacheManagerPeerListenerFactory的属性:
    * class - 工厂类全称
    * properties  - 以逗号分隔针对工厂配置的属性
   Ehcache 配备了内置的基于RMI的通讯系统。可用RMICacheManagerPeerListenerFactory配置其监听器组件RMICacheManagerPeerListener。
   可按照下面示例配置:
 
 <cacheManagerPeerListenerFactory
        class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
        properties="hostName=fully_qualified_hostname_or_ip,port=40001,socketTimeoutMillis=120000"/>

  所有的属性都是可选的。如下:
  * hostName - 运行监听器的主机名。指定位置的主机是多宿主的,而你想控制在集群中接收消息的接口。默认值为默认接口的主机名。
  * port - 监听器监听的端口。默认值我自由端口。
  * socketTimeoutMillis - 向监听器发送消息时,MS客户端套接字的number将保持开放。即使发送最慢的消息它也应满足。默认值为120000ms
  

 5. (cache的配置)

以下属性是必须的:
  name : cache的名称。用于识别cache,不可重复。
  maxElementsInMemory : 设置在内存中创建的最大对象个数(如果内存中元素超出该个数,超出的元素就会自动缓存到ehcache.xml设定的磁盘地址中)
  eternal : 设置元素是否是永恒的,如果是,那么timeouts将会被忽略且元素永不过期!
  overflowToDisk : 当内存中高速缓存已达到最大限制,设置元素是否可以溢出到磁盘
  以下属性是可选的:
  timeToIdleSeconds : 设置元素过期前的空闲时间。即元素过期前可访问的最大时间量(超过该时间,该缓存会被清除)。只有非eternal的元素才可使用!
        值为0意味着元素可以空闲到无限久。默认值为0.
  timeToLiveSeconds : 设置元素过期前的存活时间。即元素从创建到过期间最大的时间量。只有非eternal的元素才可使用!
  值为0以为着元素可一直保存。默认值为0.
  
  diskPersistent : 重启虚拟机是否依然保存磁盘存储数据。默认值为false。
  diskExpiryThreadIntervalSeconds : 运行磁盘终止线程之间的秒数。默认值为120s

  diskSpoolBufferSizeMB: 为后台打印缓冲区分配的大小。对这一区域进行写操作然后会异步写入到磁盘。默认大小30MB。每个打印缓冲区只对应自己的cache。如果你遇到内存错误,就可以考虑降低该值。想提高磁盘存储性能就可以考虑增大该值。Trace level logging in the DiskStore will show if put back ups are occurring.

  memoryStoreEvictionPolicy: 到达maxElementsInMemory限制时,策略会强制执行。默认的策略是最近最少使用(LRU).其他策略-'先进先出'(FIFO)和'较少使用'(LFU)也可用.
   CACHE中元素也可以包含带有相同工厂类和属性格式的子元素。可以如下定义子元素:
   * cacheEventListenerFactory - 为缓存事件注册监听器,比如,put,remove,update,和expire
   * bootstrapCacheLoaderFactory - 指定BootstrapCacheLoader,由cache在初始化预填充自身时调用。
   每个分布式的cache都需要设置一个缓存事件监听器来向其他同行CacheManager传递消息。对于内置的RMI,可对每个分布式缓存的配置添加RMICacheReplicatorFactory类型的cacheEventListenerFactory元素来加以实现。如下例所示:

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

   RMICacheReplicatorFactory只识别如下属性:
   * replicatePuts=true|false - 放在缓存中的新元素是否被复制到其他缓存中。默认true
   * replicateUpdates=true|false - 重写一个已经具有相同键的元素是否被复制。默认为true
   * replicateRemovals=true  -  移除的元素是否被复制。默认为true
   * replicateAsynchronously=true | false - 复制行为是异步(true)还是同步(false)的。默认为true
   * replicateUpdatesViaCopy=true | false -是否新元素复制到其他caches中(true),或是发送删除消息。默认值为true
   * asynchronousReplicationIntervalMillis=<number of milliseconds>
   在使用RMICacheReplicators的集群中,RMIBootstrapCacheLoader引导缓存。它可如下配置:
   
<bootstrapCacheLoaderFactory
        class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"
        properties="bootstrapAsynchronously=true, maximumChunkSizeBytes=5000000"/>

   RMIBootstrapCacheLoaderFactory只识别下列属性:
  * bootstrapAsynchronously=true|false -  cache启动后,bootstrap是否在后台进行。如果为false,引导行为必须在cache可用之前完成。默认值为true。
  * maximumChunkSizeBytes=<integer> - cache可能会很大,比虚拟机的内存限制还大。该属性允许引导程序在块中获取元素。默认块大小5MB

   
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值