首页 > 代码库 > Java缓存Ehcache-核心类和方法介绍

Java缓存Ehcache-核心类和方法介绍

Ehcache核心类和方法

 

EhCache里面有一个CacheManager类型,它负责管理cacheCache里面存储着Element对象,Element必须是key-value对。Cache是实际物理实现的,在内存中或者磁盘。这些组件的逻辑表示就是下面即将要讨论的类。他们的方法提供了可编程的访问方式。

 

CacheManager

负责Cache的创建、访问、移除。

 

CacheManager创建

CacheManager支持两种创建模式:单例(Singleton mode)和实例(InstanceMode)。

2.5之前的版本中,在同一个JVM中允许存在任意数量相同名字的CacheManager。每调用new CacheManager(...)一次,就会产生一个新的CacheManager实例,而不管已经存在多少个。调用CacheManager.create(...),则返回的是已经存在的那个配置对应的单例CacheManager,如果不存在,则创建一个。


2.5之后的版本,不允许在同一个JVM内存在多个具有相同名字的CacheManager。创建非单例实例的CacheManager()构造函数可能会打破这一规则,但是会抛出NPE异常。如果你的代码要在同一个JVM创建多个同名的实例,请使用静态方法CacheManager.create(),总是返回对应名的CacheManager(如果已经存在),否则创建一个。

 

事实上,我们可以直接利用Spring中的EhCacheManagerFactoryBean[spring2.5.4]来帮我们完成CacheManager的创建,看看它的具体创建方式:

if (this.shared) {
			// Shared CacheManager singleton at the VM level.
			if (this.configLocation != null) {
				this.cacheManager = CacheManager.create(this.configLocation.getInputStream());
			}
			else {
				this.cacheManager = CacheManager.create();
			}
		}
		else {
			// Independent CacheManager instance (the default).
			if (this.configLocation != null) {
				this.cacheManager = new CacheManager(this.configLocation.getInputStream());
			}
			else {
				this.cacheManager = new CacheManager();
			}
		}
		if (this.cacheManagerName != null) {
			this.cacheManager.setName(this.cacheManagerName);
		}



EhCache2.5.2及其以上版本的创建方法归纳如下:

  • CacheManager.newInstance(Configuration configuration) :创建一个新的CacheManager 对象或者返回已经存在的对应配置中名字的CacheManager
  • CacheManager.create():创建一个新的默认配置的单例CacheManager ,或者返回一个已经存在的单例。
  • CacheManager.create(Configuration configuration),创建一个对应传入配置文件中名字的单例CacheManager,或者返回已经存在的单例CacheManager。
  • new CacheManager(Configuration configuration),创建一个新的CacheManager,或者如果对应配置的CacheManager已经存在或配置参数为空,抛出异常。

 

Instance Mode中,如果Cache均使用MemoryStore,则没有什么特别需要注意的。但是如果使用了DIskStore,那么每个CacheManager必须具有不同的diskStore路径。当一个新的CacheManager被创建的时候,需要检查没有别的CacheManager使用同样的DiskStore路径。如果有,就会抛出异常CacheException。如果CacheManager是集群中一部分,那么其监听端口必须唯一。

 

SingletonmodeInstance Mode可以混合使用,而不会产生冲突。

 

Ehcache

所有的cache都实现了接口Ehcache。每个cache都有名字和属性,且包含Element

Ehcache中的cache相当于其他缓存系统中的一块缓存区域。

 

Element

Element是存放于cache中的原子单位。它有一个key、一个value以及关于访问的记录。Element被放进到cache或者从cache移除。他们也可能会由于过期被移除,这依赖于配置。

 

参考资料:

源文档 <http://ehcache.org/documentation/get-started/key-classes-methods> 

Java缓存Ehcache-核心类和方法介绍