Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.holmos.cache.cache.Cache Maven / Gradle / Ivy
package com.holmos.cache.cache;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import com.holmos.cache.cache.listener.CacheListener;
import com.holmos.cache.config.CacheConfigComponent;
import com.holmos.cache.element.Element;
import com.holmos.cache.exception.CacheException;
import com.holmos.cache.loader.CacheLoader;
import com.holmos.cache.outpolicy.CacheOutPolicy;
import com.holmos.cache.status.CacheStatus;
/**
* Holmos Watsen单层缓存系统,此接口为缓存功能接口,如果实现新的缓存需要继承此接口
* @author: 吴银龙([email protected] )
* @version: 2013-3-7 下午7:33:41
*/
public interface Cache {
/**
* 向缓存里面放入一个元素
*
* 需要更新这个元素的一些属性信息,比如访问时间,访问次数等等,如果之前缓存中有此元素的话
* 通知访问元素的监听器,触发一些事件
* 如果此元素原来在缓存里面没有,则新增此元素;如果有,则更新此元素
*
* @param element 待进行put操作的元素
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalArgumentException 当传入非法参数的时候,比如element == null
* @throws IllegalStateException 当缓存不处于服务状态的时候调用put抛出此异常
* */
public void put(Element element) throws IllegalArgumentException,IllegalStateException,
CacheException;
/**
* {@link #put(Element)}的批量操作方法
*
* 当集合中有一个Element为null 或者整个集合为null,抛出{@link IllegalArgumentException}
* 其他功能和{@link #put(Element)}一致
*
* @param elements 待进行put操作的元素集合
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalArgumentException 当传入非法参数的时候,比如element == null
* @throws IllegalStateException 当缓存不处于服务状态的时候调用put抛出此异常
* */
public void putAll(Collection elements) throws IllegalArgumentException, IllegalStateException,
CacheException;
/**
* 同步put操作,等待element已经成功放入缓存内部之后返回
*
* 其他操作同{@link #put(Element)}
*
* @param element 待进行put操作的元素
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalArgumentException 当传入非法参数的时候,比如element == null
* @throws IllegalStateException 当缓存不处于服务状态的时候调用put抛出此异常
* */
public void putSyn(Element element) throws IllegalArgumentException,IllegalStateException,
CacheException;
/**
* 不等待缓存元素成功放入缓存立即返回
*
* 其他操作同{@link #put(Element)}
*
* @param element 待进行put操作的元素
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalArgumentException 当传入非法参数的时候,比如element == null
* @throws IllegalStateException 当缓存不处于服务状态的时候调用put抛出此异常
* */
public void putAsy(Element element) throws IllegalArgumentException,IllegalStateException,
CacheException;
/**
* put 操作的静默模式,不更新此数据的状态信息,比如访问次数,最近访问时间,不修改版本号,也不触发元素访问监听器,只是很简单的向缓存里面放入此数据
*
* 不更新缓存元素状态信息
* 不触发缓存元素访问监听器
*
* @param element 待进行put操作的元素
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalArgumentException 当传入非法参数的时候,比如element == null
* @throws IllegalStateException 当缓存不处于服务状态的时候调用put抛出此异常
* */
public void putQuite(Element element) throws IllegalArgumentException,IllegalStateException,
CacheException;
/**
* 删除 索引 为key 的缓存元素
*
* 触发缓存元素访问监听器
*
* @param key 待进行remove操作的元素的索引
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalArgumentException 当传入非法参数的时候,比如key == null
* @throws IllegalStateException 当缓存不处于服务状态的时候调用remove抛出此异常
* @return true 删除成功 false 删除失败
* */
public boolean remove(Object key) throws IllegalArgumentException,IllegalStateException,
CacheException;
/**
* {@link #remove(Object)}的批量操作
*
* @param keys 待进行remove操作的元素的索引集合
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalArgumentException 当传入非法参数的时候,比如其中任何一个元素key == null,keys == null 的时候也抛出此异常
* @throws IllegalStateException 当缓存不处于服务状态的时候调用remove抛出此异常
* @return true 删除成功 false 删除失败
* */
public boolean removeAll(Collection keys)throws IllegalArgumentException,IllegalStateException,
CacheException;
/**
* 等待缓存元素成功从缓存中移除成功之后方法返回
*
* 其他操作同{@link #remove(Object))}
*
* @param key 待进行remove操作的元素索引
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalArgumentException 当传入非法参数的时候,比如element == null
* @throws IllegalStateException 当缓存不处于服务状态的时候调用remove抛出此异常
* @return true 删除成功 false 删除失败
* */
public boolean removeSyn(Object key) throws IllegalArgumentException,IllegalStateException,
CacheException;
/**
* 不等待缓存元素成功从缓存中移除直接返回,但要触发缓存元素访问监听器
*
* 其他操作同{@link #remove(Object))}
*
* @param key 待进行remove操作的元素索引
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalArgumentException 当传入非法参数的时候,比如element == null
* @throws IllegalStateException 当缓存不处于服务状态的时候调用remove抛出此异常
* @return true 删除成功 false 删除失败
* */
public boolean removeAsy(Object key) throws IllegalArgumentException,IllegalStateException,
CacheException;
/**
* 进行remove操作,但不触发缓存元素访问监听器
*
* 不触发缓存元素访问监听器
* 其他操作同{@link #remove(Object))}
*
* @param key 待进行remove操作的元素索引
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalArgumentException 当传入非法参数的时候,比如element == null
* @throws IllegalStateException 当缓存不处于服务状态的时候调用remove抛出此异常
* @return true 删除成功 false 删除失败
* */
public boolean removeQuite(Object key)throws IllegalArgumentException,IllegalStateException,
CacheException;
/**
* 将缓存中元素oldElement替换为newElement,并且触发缓存元素访问监听器
*
* 如果oldElement在缓存里面没有,则返回false
* 如果oldElement和newElement为null或者他们的key有一个为null,则抛出{@link IllegalArgumentException}
*
* @param oldElement 待进行replace操作的元素
* @param newElement 替换后的元素
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalArgumentException 当传入非法参数的时候,比如oldElement == null || newElement == null 获取他们的key 为null
* @throws IllegalStateException 当缓存不处于服务状态的时候调用put抛出此异常
* @return true 替换成功 false 替换失败
* */
public boolean replace(Element oldElement,Element newElement)throws IllegalArgumentException,IllegalStateException,
CacheException;
/**
* 等待该缓存中元素发生更新之后返回
*
* 同步替换缓存数据
* 其他功能与{@link #replace(Element, Element)}一致
*
* @param oldElement 待进行replace操作的元素
* @param newElement 替换后的元素
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalArgumentException 当传入非法参数的时候,比如oldElement == null || newElement == null 获取他们的key 为null
* @throws IllegalStateException 当缓存不处于服务状态的时候调用put抛出此异常
* @return true 替换成功 false 替换失败
* */
public boolean replaceSyn(Element oldElement,Element newElement,boolean noReplicate)throws IllegalArgumentException,IllegalStateException,
CacheException;
/**
* replace本机缓存数据的同时,异步更新主从节点上的缓存数据,本机replace操作之后立即返回
*
* 异步替换缓存数据
* 其他功能与{@link #replace(Element, Element)}一致
*
* @param oldElement 待进行replace操作的元素
* @param newElement 替换后的元素
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalArgumentException 当传入非法参数的时候,比如oldElement == null || newElement == null 获取他们的key 为null
* @throws IllegalStateException 当缓存不处于服务状态的时候调用put抛出此异常
* @return true 替换成功 false 替换失败
* */
public boolean replaceAsy(Element oldElement,Element newElement,boolean noReplicate)throws IllegalArgumentException,IllegalStateException,
CacheException;
/**
* 从缓存中获取索引为key的元素,同时更新缓存元素的状态信息
*
* 缓存中有此元素,则返回,无则返回null
* 更新缓存元素的状态,比如最近访问时间,访问次数
* 触发缓存元素访问监听器
*
* @param key 待get元素的索引
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalArgumentException 当传入非法参数的时候,比如key == null
* @throws IllegalStateException 当缓存不处于服务状态的时候调用put抛出此异常
* @return 找到的索引为key的元素,如若没有,则为null
* */
public Element get(Object key) throws IllegalArgumentException,IllegalStateException,
CacheException;
/**
* 批量获取缓存中的元素,这些元素的索引在集合keys中
*
* 批量获取,并且只发生一次对屋里存储的调用,不是简单的get批量操作
* 找不到一个元素的时候,返回的结果不是null而是一个空map,里面没有一个元素
* 触发缓存元素访问监听器
*
* @param keys 待get操作的所有keys索引集合
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalArgumentException 当传入非法参数的时候,比如keys == null,或者集合中任意一个元素key == null
* @throws IllegalStateException 当缓存不处于服务状态的时候调用put抛出此异常
* @return 找到索引集合keys中所有key的元素map列表,如果都没有找到,则返回空map
* */
public Map getAll(Collection keys)throws IllegalArgumentException,IllegalStateException,
CacheException;
/**
* get操作的静默模式,不更新缓存中元素的状态信息(比如最近访问时间),也不触发缓存元素访问监听器,直接找到元素返回
*
* 不更新缓存元素的状态信息
* 不触发缓存元素访问监听器
*
*
* @param key 待get元素的索引
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalArgumentException 当传入非法参数的时候,比如key == null
* @throws IllegalStateException 当缓存不处于服务状态的时候调用put抛出此异常
* @return 找到的索引为key的元素,如若没有,则为null
* */
public Element getQuite(Object key)throws IllegalArgumentException,IllegalStateException,
CacheException;
/**
* 获取该缓存中所有的索引keys列表
*
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalStateException 当缓存不处于服务状态的时候调用get抛出此异常
* @return 缓存中所有的索引,当缓存为空的时候,返回空list
* */
public List getAllKeys()throws IllegalStateException,CacheException;
/**
* 获取该缓存中所有的索引keys列表,但需要进行是否过期的校验,如果过期,则不获取,但不从缓存中删除
*
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalStateException 当缓存不处于服务状态的时候调用put抛出此异常
* @return 缓存中所有的索引,当缓存为空的时候,返回空list
* */
public List getAllKeysWithExpireCheck()throws IllegalStateException,CacheException;
/**
* 判断指定索引key所指向的元素是否过期
*
* @param key 待检查的索引key,如果为null,则抛出{@link IllegalArgumentException}
*
* @return true 过期 false 没有过期
* */
public boolean isExpired(Object key) throws IllegalArgumentException,CacheException;
/**
* 获取所有注册到该cache中的缓存事件监听器
*
* @return 所有注册到该cache中的缓存事件监听器
* */
public List getAllCacheListeners();
/**
* 将cacheListener注册到该缓存中,那么缓存执行指定操作的时候,将会通知cacheListener
*
* @param 待注册的cacheListener
* */
public void registerCacheListener(CacheListener cacheListener);
/**
* 注销指定的缓存监听器
*
* @param 待注销指定的缓存监听器
* */
public void removeCacheListener(CacheListener cacheListener);
/**
* 注销掉注册在该缓存上的所有缓存事件监听器
* */
public void removeAllCacheListeners();
/**
* 判断缓存中是否有指定索引key所指向的元素
*
* @param key 待校验的元素索引key
* @throws CacheException
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalStateException 当缓存不处于服务状态的时候调用isExist抛出此异常
* @return true 存在 false 不存在
* */
public void isExist(Object key)throws IllegalStateException,CacheException;
/**
* 获取缓存的可用大小,单位为B(Byte)
*
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalStateException 当缓存不处于服务状态的时候调用put抛出此异常
* @return 缓存当下可用的大小
* */
public long getRemainSize()throws IllegalStateException,CacheException;
/**
* 获取缓存的已用大小,单位为B(Byte),包括已经过期还没有从缓存中删除的元素
*
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalStateException 当缓存不处于服务状态的时候调用put抛出此异常
* @return 缓存当下可用的大小
* */
public long getUsedSize()throws IllegalStateException,CacheException;
/**
* 获取当前缓存所在的层次,层数越低,越先被访问,比如JVM内存层数为1,bigMemory为2等等,这个是写在配置文件中的
*
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalStateException 当缓存不处于服务状态的时候调用getLayer抛出此异常
* @return 缓存的层次
* */
public int getLayer()throws IllegalStateException,CacheException;
/**
* 获取当前缓存的状态信息,包括(访问次数,命中次数,当前已用大小,可用大小,缓存名字,缓存层数等等)
*
* @return 缓存的状态信息
* */
public CacheStatus getStatus();
/**
* 获取当前缓存的名字
*
* @return 缓存的名字
* */
public String getName();
/**
* 设置当前缓存的名字
*
* @param name 设置给当前缓存的名字,如果为null或者""则抛出异常
* */
public void SetName(String name) throws IllegalArgumentException;
/**
* 子类实现缓存描述信息
*
* @return 该缓存描述信息
* */
public String toString();
/**
* 调用此方法,异步清除该缓存中所有已经过期的元素,注意如下:
*
* 如果该缓存元素很多,那么清除的过程需要历经很长的时间
* 可能再调用该方法的过程中,又有许多元素已经过期,那么这些过期的元素在此次不做清除
* 当缓存元素可能很多的时候,那么调用该方法的时候要用心考虑一下元素淘汰方案
*
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalStateException 当缓存不处于服务状态的时候调用evictExpiredElements抛出此异常
* */
public void evictExpiredElements() throws IllegalStateException,CacheException;
/**
* 将缓存元素写入持久化存储设备,该设备写在配置文件里面或者以编程的方式写好
*
* 写入完毕后才会返回,可能会持续相当长一段时间
*
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalStateException 当缓存不处于服务状态的时候调用flush抛出此异常
* */
public void flush() throws IllegalStateException,CacheException;
/**
* 缓存初始化方法,将一些缓存参数从配置文件中加载或者编程设置好之后,调用此方法,进行初始化
*
* 该方法调用过后,该缓存已经准备好存储元素
* */
public void initialise();
/**
* 默认先调用flush方法将该缓存中的元素写入持久化存储设备之后,释放该缓存所占资源,该缓存将不再提供服务
*
* @throws CacheException 缓存系统出现异常所抛
* @throws IllegalStateException 当缓存不处于服务状态的时候调用flush抛出此异常
* */
public void dispose() throws IllegalStateException,CacheException;
/**
* 获取该层缓存的配置组件信息
*
* @return 该层缓存的配置组件信息
* */
public CacheConfigComponent getCacheConfigComponent();
/**
* 给该缓存设置配置组件
*
* @param configComponent 待设置的配置组件
* */
public void SetCacheConfigComponent(CacheConfigComponent configComponent);
/**
* 给该缓存注册一个缓存元素loader,loader的存在主要为了如下情况考虑
*
* 缓存挂了重启之后,直接从被持久化的物理存储设备中加载已经被缓存的元素
* 从其他的主从兄弟节点,加载缓存数据,相当于远程拷贝
*
* @param 待注册的缓存元素加载器
*/
public void registerCacheLoader(CacheLoader cacheLoader);
/**
* 将一个已经注册的缓存元素加载器从该缓存中移除
*
* @param 待移除的缓存加载器
*/
public void unregisterCacheLoader(CacheLoader cacheLoader);
/**
* 设置该缓存的过期元素淘汰策略
*
* @param outPolicy 设置的缓存过期元素的淘汰策略
* */
public void setOutPolicy(CacheOutPolicy outPolicy);
/**
* 获取该缓存的过期元素淘汰策略
*
* @return 该缓存的过期元素淘汰策略
* */
public CacheOutPolicy getOutPolicy();
}