ehcache 分布式缓存
来源:互联网 发布:航天信息a6软件 编辑:程序博客网 时间:2024/06/11 18:38
<?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
- Ehcache 分布式缓存
- EHCACHE分布式缓存
- EhCache分布式缓存
- Ehcache分布式缓存
- EHCACHE分布式缓存
- Ehcache 分布式缓存 -springMVC
- Ehcache分布式缓存实现
- 分布式缓存--EhCache
- Ehcache 分布式缓存 -springMVC
- Ehcache 分布式缓存 -springMVC
- ehcache 分布式缓存
- EhCache 分布式缓存/缓存集群
- EhCache 分布式缓存/缓存集群
- EhCache 分布式缓存/缓存集群
- EhCache 分布式缓存/缓存集群
- EhCache 分布式缓存/缓存集群
- EhCache 分布式缓存/缓存集群
- EhCache 分布式缓存/缓存集群
- ecxcle 对于日期的处理
- leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal 中前序构造BST
- Solr schema.xml配置详解
- 共用体
- Vim命令合集
- ehcache 分布式缓存
- android Toast 详解
- JTAG和ULINK、JLINK、ST-LINK
- java 线程
- shiro学习之路(3)----自定义Realm
- 根据两组数据拟合曲线
- Python将list形式的字符串转换为list
- Linux下硬件信息查询命令与解析
- final byte 和byte变量的加减运算