Ehcache 缓存(二)xml配置相关

来源:互联网 发布:宁波软件培训 编辑:程序博客网 时间:2024/06/16 15:08
如果没有配置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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 毛孔粗大还有痘印怎么办 高一的不爱上数学怎么办 监狱系统需要体测怀孕怎么办 货运从业资格证年审过期了怎么办 科三线路记不住怎么办? 汽车大灯里面起雾水怎么办 二级重伤对方法庭拒绝赔偿怎么办? 在麦当劳工作收到假钞怎么办 东西湖小学分配太远怎么办 农行k令过期了怎么办 穿军训的鞋捂坏了怎么办 联通手机号销户话费怎么办 建行员工所持有的原始股怎么办 孕妇喝了午时茶怎么办 苹果6id被锁了怎么办 苹果手机app密码忘了怎么办 好哥们借钱手上没钱怎么办 武汉ca证书u盾怎么办 判了刑发现还有漏案没判怎么办 高铁旅客漏乘怎么办 水库里面要养殖小龙虾最好怎么办 点读机的笔丢了怎么办 皮肤晒的很黑怎么办 电脑wifi连接受限制怎么办 高中孩子班管理松怎么办 脱式计算有余数怎么办 手机被别人绑定微信怎么办 饿了么入职查不到学历怎么办 高中没考上家人让打工怎么办 一建证书丢了怎么办 自考大专证书丢了怎么办 护士学分卡丢了怎么办 公司电脑只能用内网怎么办 遇见素质低的人怎么办 被素质低的人骂怎么办 对素质差的人怎么办 碰到素质低的人怎么办 和韩国人结婚后工作怎么办 大连明珠卡坏了怎么办 护肤品酒精含量太高怎么办 父母出国三年想孩子怎么办