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,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)也可用. <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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |