Creating a CacheManager

All usages of the Ehcache API start with the creation of a CacheManager. The following code snippets illustrate various ways to create one.

Singleton versus Instance

The following creates a singleton CacheManager using defaults, then list caches.

CacheManager.create();
String[] cacheNames = CacheManager.getInstance().getCacheNames();

The following creates a CacheManager instance using defaults, then list caches.

CacheManager manager = CacheManager.newInstance();
String[] cacheNames = manager.getCacheNames();

The following creates two CacheManagers, each with a different configuration, and list the caches in each.

CacheManager manager1 = CacheManager.newInstance("src/config/ehcache1.xml");
CacheManager manager2 = CacheManager.newInstance("src/config/ehcache2.xml");
String[] cacheNamesForManager1 = manager1.getCacheNames();
String[] cacheNamesForManager2 = manager2.getCacheNames();

Loading a Configuration

When a CacheManager is created, it creates caches found in a provided configuration.

The following creates a CacheManager based on the configuration defined in the ehcache.xml file in the classpath.

CacheManager manager = CacheManager.newInstance();

The following creates a CacheManager based on a specified configuration file.

CacheManager manager = CacheManager.newInstance("src/config/ehcache.xml");

The following creates a CacheManager from a configuration resource in the classpath.

URL url = getClass().getResource("/anotherconfigurationname.xml");
CacheManager manager = CacheManager.newInstance(url);

The following creates a CacheManager from a configuration in an InputStream.

InputStream fis = new FileInputStream(new File ("src/config/ehcache.xml").getAbsolutePath());
try {
CacheManager manager = CacheManager.newInstance(fis);
} finally {
fis.close();
}

Adding and Removing Caches Programmatically

Adding Caches Programmatically

You are not limited to using caches that are placed in the CacheManager configuration. A new cache based on the default configuration can be added to a CacheManager very simply:

manager.addCache(cacheName);

For example, the following adds a cache called testCache to CacheManager called singletonManager. The cache is configured using defaultCache from the CacheManager configuration.

CacheManager singletonManager = CacheManager.create();
singletonManager.addCache("testCache");
Cache test = singletonManager.getCache("testCache");

As shown below, you can also create a new cache with a specified configuration and add the cache to a CacheManager. Note that when you create a new cache, it is not usable until it has been added to a CacheManager.

CacheManager singletonManager = CacheManager.create();
Cache memoryOnlyCache = new Cache("testCache", 5000, false, false, 5, 2);
singletonManager.addCache(memoryOnlyCache);
Cache test = singletonManager.getCache("testCache");

Below is another way to create a new cache with a specified configuration. This example creates a cache called testCache and adds it CacheManager called manager.

// Create a singleton CacheManager using defaults
CacheManager manager = CacheManager.create();
// Create a Cache specifying its configuration.
Cache testCache = new Cache(new CacheConfiguration("testCache", maxEntriesLocalHeap)
.memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LFU)
.eternal(false)
.timeToLiveSeconds(60)
.timeToIdleSeconds(30)
.diskExpiryThreadIntervalSeconds(0)
.persistence(new PersistenceConfiguration().strategy(Strategy.LOCALTEMPSWAP)));
manager.addCache(testCache);

For a full list of parameters for a new Cache, see the Cache constructor at http://ehcache.org/xref/net/sf/ehcache/Cache.html.

Removing Caches Programmatically

The following removes the cache called sampleCache1:

CacheManager singletonManager = CacheManager.create();
singletonManager.removeCache("sampleCache1");

Performing Basic Cache Operations

The following examples refer to manager, which is a reference to a CacheManager that contains a cache called sampleCache1.

Obtaining a reference to a Cache

The following obtains a Cache called sampleCache1, which has been preconfigured in the configuration file

Cache cache = manager.getCache("sampleCache1");

Putting an Element in Cache

The following puts an element into a cache

Cache cache = manager.getCache("sampleCache1");
Element element = new Element("key1", "value1");
cache.put(element);

Updating and Element in Cache

The following updates an element in a cache. Even though cache.put( ) is used, Ehcache knows there is an existing element, and considers the put operation as an update for the purpose of notifying cache listeners.

Cache cache = manager.getCache("sampleCache1");
cache.put(new Element("key1", "value1"));
// This updates the entry for "key1"
cache.put(new Element("key1", "value2"));

Getting an Element from Cache

The following gets a Serializable value from an element with a key of key1.

Cache cache = manager.getCache("sampleCache1");
Element element = cache.get("key1");
Serializable value = element.getValue();

The following gets a NonSerializable value from an element with a key of key1.

Cache cache = manager.getCache("sampleCache1");
Element element = cache.get("key1");
Object value = element.getObjectValue();

Removing an Element from Cache

The following removes an element with a key of key1.

Cache cache = manager.getCache("sampleCache1");
cache.remove("key1");

Obtaining Cache Sizes

The following gets the number of elements currently in the cache.

Cache cache = manager.getCache("sampleCache1");
int elementsInMemory = cache.getSize();

The following gets the number of elements currently in the MemoryStore.

Cache cache = manager.getCache("sampleCache1");
long elementsInMemory = cache.getMemoryStoreSize();

The following gets the number of elements currently in the DiskStore.

Cache cache = manager.getCache("sampleCache1");
long elementsInMemory = cache.getDiskStoreSize();

Shutdown the CacheManager

You should shut down a CacheManager after use. It does have a shut-down hook, but it is a best practice to shut it down in your code.

The following shuts down the singleton CacheManager:

CacheManager.getInstance().shutdown();

The following shuts down a CacheManager instance, assuming you have a reference to the CacheManager called manager:

manager.shutdown();

For additional examples, see CacheManagerTest at http://ehcache.org/xref-test/net/sf/ehcache/CacheManagerTest.html.

Ehcache(2.9.x) - API Developer Guide, Basic Caching的更多相关文章

  1. Ehcache(2.9.x) - API Developer Guide, Key Classes and Methods

    About the Key Classes Ehcache consists of a CacheManager, which manages logical data sets represente ...

  2. Ehcache(2.9.x) - API Developer Guide, Transaction Support

    About Transaction Support Transactions are supported in versions of Ehcache 2.0 and higher. The 2.3. ...

  3. Ehcache(2.9.x) - API Developer Guide, Write-Through and Write-Behind Caches

    About Write-Through and Write-Behind Caches Write-through caching is a caching pattern where writes ...

  4. Ehcache(2.9.x) - API Developer Guide, Cache Eviction Algorithms

    About Cache Eviction Algorithms A cache eviction algorithm is a way of deciding which element to evi ...

  5. Ehcache(2.9.x) - API Developer Guide, Cache Usage Patterns

    There are several common access patterns when using a cache. Ehcache supports the following patterns ...

  6. Ehcache(2.9.x) - API Developer Guide, Searching a Cache

    About Searching The Search API allows you to execute arbitrarily complex queries against caches. The ...

  7. Ehcache(2.9.x) - API Developer Guide, Using Explicit Locking

    About Explicit Locking Ehcache contains an implementation which provides for explicit locking, using ...

  8. Ehcache(2.9.x) - API Developer Guide, Blocking and Self Populating Caches

    About Blocking and Self-Populating Caches The net.sf.ehcache.constructs package contains some applie ...

  9. Ehcache(2.9.x) - API Developer Guide, Cache Loaders

    About Cache Loaders A CacheLoader is an interface that specifies load() and loadAll() methods with a ...

随机推荐

  1. POJ 2481 Cows (数组数组求逆序对)

    题目链接:http://poj.org/problem?id=2481 给你n个区间,让你求每个区间被真包含的区间个数有多少,注意是真包含,所以要是两个区间的x y都相同就算0.(类似poj3067, ...

  2. 12个有趣的C语言面试题

    摘要:12个C语言面试题,涉及指针.进程.运算.结构体.函数.内存,看看你能做出几个! 1.gets()函数 问:请找出下面代码里的问题: #include<stdio.h> int ma ...

  3. 工具栏停靠实现(toolbar docking)

    // TODO: 如果不需要工具栏可停靠,则删除这三行 m_ToolBar_File.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_A ...

  4. CSS 文本格式

    整理自:(http://www.w3school.com.cn/css/css_text.asp) Text Color 颜色属性被用来设置文字的颜色. 颜色是通过CSS最经常的指定: 十六进制值 - ...

  5. Ext.tree.Panel Extjs 在表格中添加树结构,并实现节点移动功能

    最近在用Extjs 做后台管理系统,真的非常好用.总结的东西分享一下. 先展示一下效果图 好了,开始吧! 首先说一下我的创建结构: 一.构造内容 这个函数中包括store的创建,treePanel的创 ...

  6. php error file_get_contents()

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  7. some scrum screenshots

    backlog tracking progress Initial Stage Next Stage End

  8. HDU 4343 D - Interval query 二分贪心

    D - Interval queryTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest ...

  9. c# 路径空格---ProcessStartInfo参数问题

    今天在整合程序的时候,要从一个程序转到另一个程序 当然要使用:   ProcessStartInfo startInfo = new ProcessStartInfo("\\Program ...

  10. 使用python selenium进行自动化functional test

    Why Automation Testing 现在似乎大家都一致认同一个项目应该有足够多的测试来保证功能的正常运作,而且这些此处的‘测试’特指自动化测试:并且大多数人会认为如果还有哪个项目依然采用人工 ...