EHCache使用(收集ZZ)

[FROM: http://blog.csdn.net/zyl623/archive/2007/02/28/1517465.aspx

http://hi.baidu.com/en_wan/blog/item/20b78c59bfda0a2f2934f0f8.html]

  1. //ehcache-1.2 管理器各种建立的方法:
  2.    //方法一:
  3.      CacheManager manager = new CacheManager();
  4.    //方法二:
  5.      CacheManager manager = new CacheManager("src/config/ehcache.xml");
  6.    //方法三:
  7.      URL url = getClass().getResource("/anotherconfigurationname.xml");
  8.      CacheManager manager = new CacheManager(url);
  9.   // 方法四:
  10.      InputStream fis = new FileInputStream(new File("src/config/ehcache.xml").getAbsolutePath());
  11.      try {
  12.        CacheManager manager = new CacheManager(fis);
  13.      } finally {
  14.        fis.close();
  15.      }
  16. //缓存的创建,采用自动的方式
  17. CacheManager singletonManager = CacheManager.create();
  18. singletonManager.addCache("testCache");
  19. Cache test = singletonManager.getCache("testCache");     
  20. //或者直接创建Cache
  21. CacheManager singletonManager = CacheManager.create();
  22. Cache memoryOnlyCache = new Cache("testCache"5000falsefalse52);
  23. manager.addCache(memoryOnlyCache);
  24. Cache test = singletonManager.getCache("testCache");    
  25.    //ehcache-1.2 cacheNames 列表的取得;
  26.    //方法一:
  27.      CacheManager.create();
  28.      String[] cacheNames = CacheManager.getInstance().getCacheNames();
  29.    //方法二:
  30.      CacheManager manager = new CacheManager();
  31.      String[] cacheNames = manager.getCacheNames();
  32.    //方法三:
  33.      CacheManager manager1 = new CacheManager("src/config/ehcache1.xml");
  34.      String[] cacheNamesForManager1 = manager1.getCacheNames();
  35.   
  36. //删除cache
  37. CacheManager singletonManager = CacheManager.create();
  38. singletonManager.removeCache("sampleCache1");    
  39. //在使用ehcache后,需要关闭
  40. CacheManager.getInstance().shutdown()  
  41.    
  42. //caches 的使用
  43. Cache cache = manager.getCache("sampleCache1");     
  44. //执行crud操作
  45. Cache cache = manager.getCache("sampleCache1");
  46. Element element = new Element("key1""value1");
  47. cache.put(element);     
  48. //update
  49. Cache cache = manager.getCache("sampleCache1");
  50. cache.put(new Element("key1""value1");
  51.     //This updates the entry for "key1"
  52. cache.put(new Element("key1""value2");     
  53. //get Serializable
  54. Cache cache = manager.getCache("sampleCache1");
  55. Element element = cache.get("key1");
  56. Serializable value = element.getValue();     
  57. //get non serializable
  58. Cache cache = manager.getCache("sampleCache1");
  59. Element element = cache.get("key1");
  60. Object value = element.getObjectValue();     
  61. //remove
  62. Cache cache = manager.getCache("sampleCache1");
  63. Element element = new Element("key1""value1"
  64. cache.remove("key1");      
  65.      //Cache 属性说明:
  66.      //  构造函数:
  67.        public Cache(java.lang.String name,
  68.              int maxElementsInMemory,
  69.              boolean overflowToDisk,
  70.              boolean eternal,
  71.              long timeToLiveSeconds,
  72.              long timeToIdleSeconds)
  73.        参数说明:
  74.         name              - 元素名字。
  75.          maxElementsInMemory      - 设定内存中创建对象的最大值。
  76.          overflowToDisk         - 设置当内存中缓存达到 maxInMemory 限制时元素是否可写到磁盘上。
  77.          eternal   - 设置元素(译注:内存中对象)是否永久驻留。如果是,将忽略超时限制且             元素永不消亡。
  78.          timeToIdleSeconds       - 设置某个元素消亡前的停顿时间。
  79.                             也就是在一个元素消亡之前,两次访问时间的最大时间间隔值。
  80.                             这只能在元素不是永久驻留时有效(译注:如果对象永恒不灭,则
  81.                             设置该属性也无用)。
  82.                             如果该值是 0 就意味着元素可以停顿无穷长的时间。
  83.          timeToLiveSeconds       - 为元素设置消亡前的生存时间。
  84.                             也就是一个元素从构建到消亡的最大时间间隔值。
  85.                             这只能在元素不是永久驻留时有效。
  86. ehcache的默认配置文件名为ehcache.xml,也可以自己指定。配置文件比较的简单,基本上也就是常用的几个元素。

 

  1. 配置元素说明:
  2. diskStore:配置DiskStore,当需要使用磁盘保存的时候,需要对象实现序列化接口
  3.     属性:path 配置文件存储位置,如user.home,user.dir,java.io.tmpdir
  4. cacheManagerEventListenerFactory :指定CacheManagerEventListenerFactory,用于创建CacheManagerPeerProvider
  5. 用于提醒当CacheManager中的缓存增加或者删除时。
  6.     
  7.     属性:class:完整的工厂类名称 
  8.          properties:逗号分割的属性
  9. 事件包括 增加cache和删除cache
  10. cacheManagerPeerProviderFactory:指定CacheManagerPeerProviderFactory,用于创建 CacheManagerPeerProvider,用于在cluster中查找CacheManagers,主要用于机群环境
  11.     属性:
  12.         class:完整的工厂类名称
  13.         properties:逗号分割的属性
  14. 默认的配置:
  15. <cacheManagerPeerProviderFactory
  16.                                 class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
  17.                                 properties="peerDiscovery=automaticmulticastGroupAddress=230.0.0.1,
  18.                                     multicastGroupPort=4446timeToLive=32"/>
  19.        
  20. <cacheManagerPeerProviderFactory class=
  21.                           "net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
  22.                           properties="peerDiscovery=manual,
  23. rmiUrls=//server1:40000/sampleCache1|//server2:40000/sampleCache         1//server1:40000/sampleCache2|//server2:40000/sampleCache2"/>     
  24. cacheManagerPeerListenerFactory:指定CacheManagerPeerListenerFactory,用于创建CacheManagerPeerListener,监听cluster中的复制信息
  25.     属性:
  26.         class:完整的工厂类名称
  27.         properties:逗号分割的属性
  28. 默认配置
  29.     <cacheManagerPeerListenerFactory
  30.         class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
  31.         properties="hostName=fully_qualified_hostname_or_ip,
  32.                     port=40001,
  33.                     socketTimeoutMillis=120000"/>     
  34. defaultCache: 默认缓存配置    
  35. 必须属性:
  36.         name:设置缓存的名称,用于标志缓存,惟一
  37.         maxElementsInMemory:在内存中最大的对象数量
  38.         maxElementsOnDisk:在DiskStore中的最大对象数量,如为0,则没有限制
  39.         eternal:设置元素是否永久的,如果为永久,则timeout忽略
  40.         overflowToDisk:是否当memory中的数量达到限制后,保存到Disk
  41.     可选的属性:
  42.         timeToIdleSeconds:设置元素过期前的空闲时间
  43.         timeToLiveSeconds:设置元素过期前的活动时间
  44.         diskPersistent:是否disk store在虚拟机启动时持久化。默认为false
  45.         diskExpiryThreadIntervalSeconds:运行disk终结线程的时间,默认为120秒
  46.         memoryStoreEvictionPolicy:策略关于Eviction
  47. 缓存子元素:    cacheEventListenerFactory:注册相应的的缓存监听类,用于处理缓存事件,如put,remove,update,和expire
  48.    bootstrapCacheLoaderFactory:指定相应的BootstrapCacheLoader,用于在初始化缓存,以及自动设置。
  49. 如下的例子:
  50.  <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
  51.          properties="replicateAsynchronously=true,
  52.          replicatePuts=true,
  53.          replicateUpdates=true,
  54.          replicateUpdatesViaCopy=true,
  55.          replicateRemovals=true "/>     
  56.   
  57. <bootstrapCacheLoaderFactory
  58.         class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"
  59.         properties="bootstrapAsynchronously=true, maximumChunkSizeBytes=5000000"/>     
  60.   
  61.  <defaultCache
  62.             maxElementsInMemory="10000"
  63.             eternal="false"
  64.             timeToIdleSeconds="120"
  65.             timeToLiveSeconds="120"
  66.             overflowToDisk="true"
  67.             maxElementsOnDisk="10000000"
  68.             diskPersistent="false"
  69.             diskExpiryThreadIntervalSeconds="120"
  70.             memoryStoreEvictionPolicy="LRU"
  71.             />     
  72. <!--cache配置同defaultCache -->
  73. <cache name="sampleDistributedCache1"
  74.            maxElementsInMemory="10"
  75.            eternal="false"
  76.            timeToIdleSeconds="100"
  77.            timeToLiveSeconds="100"
  78.            overflowToDisk="false">
  79.         <cacheEventListenerFactory
  80.                 class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
  81.         <bootstrapCacheLoaderFactory
  82.                 class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"/>
  83.     </cache>     
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值