com.holmos.cache.store.CacheStore Maven / Gradle / Ivy
package com.holmos.cache.store;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import com.holmos.cache.element.Element;
import com.holmos.cache.exception.CacheException;
import com.holmos.cache.outpolicy.CacheOutPolicy;
import com.holmos.cache.status.CacheStatus;
/**
* 存储器的API接口,CacheStore是对物理存储器的一种操作,是对物理存储器的一种抽象
*
* @author: 吴银龙([email protected])
* @version: 2013-3-19 下午12:05:00
*/
public interface CacheStore {
/**
* 将元素element 存入存储器
*
* 如果该元素已经存在,则进行更新操作
* 如果该元素不存在,则进行插入操作
*
* @return true 存储器中没有element.key 这个元素
false 存储器中已经存在element.key这个元素
* 如果element为null,直接返回false
* */
public boolean put(Element element) throws CacheException;
/**
* 写入元素element,并对element加写锁,不能同时写
*
* 功能同{@link #put(Element)}
*
* @return true 存储器中没有element.key 这个元素
false 存储器中已经存在element.key这个元素
* 如果element为null,直接返回false
* */
public boolean putWithWriteLock(Element element) throws CacheException;
/**
* 写入元素element,并对element加读锁,在写的时候不能读
*
* 功能同{@link #put(Element)}
*
* @return true 存储器中没有element.key 这个元素
false 存储器中已经存在element.key这个元素
* 如果element为null,直接返回false
* */
public boolean putWithReadLock(Element element) throws CacheException;
/**
* 将位于Collection集合中的所有元素放入存储器
*
* @param elements
* */
public void putAll(Collection elements) throws CacheException;
/**
* 从存储器中获得 索引为key的元素
*
* @param key 如果为null,直接返回null
* */
public Element get(Object key);
/**
* 从存储器中批量获得在 索引列表keys的元素集合
*
* @param keys
* */
public List getAll(Collection