/// <summary>
/// 缓存接口
/// </summary>
public
interface
ICache
{
/// <summary>
/// 从缓存中取得指定键的值
/// </summary>
/// <param name="type">指定的类型</param>
/// <param name="key">指定的键值</param>
/// <returns></returns>
object
Get(Type type,
string
key);
/// <summary>
/// 从缓存中取得指定键的值
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="key">指定的键值</param>
/// <returns>指定键值的值</returns>
T Get<T>(
string
key);
/// <summary>
/// 从缓存中取出对象,如果没有缓存调用acquire方法
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="key">键值</param>
/// <param name="acquire">如果缓存中没有对象的处理方法,处理方法</param>
/// <param name="cacheTime">如果缓存中没有对象的处理方法设置缓存过期时间</param>
/// <returns>指定键值的值</returns>
T Get<T>(
string
key, Func<T> acquire, TimeSpan cacheTime);
/// <summary>
/// 从缓存中取出对象,如果没有缓存调用acquire方法
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="key">键值</param>
/// <param name="acquire">如果缓存中没有对象的处理方法,处理方法</param>
/// <param name="expiredTime">缓存绝对过期时间</param>
/// <returns>指定键值的值</returns>
T Get<T>(
string
key, Func<T> acquire, DateTime expiredTime);
/// <summary>
/// 从缓存中取出对象,如果没有缓存调用acquire方法
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="key">键值</param>
/// <param name="acquire">如果缓存中没有对象的处理方法,处理方法</param>
/// <param name="cacheExpiration">预先定义的缓存策略类型</param>
/// <returns>指定键值的值</returns>
T Get<T>(
string
key, Func<T> acquire, CacheExpirationTypes cacheExpiration);
/// <summary>
/// 添加一个对象到到缓存,使用缺省过期时间
/// </summary>
/// <param name="key">键值</param>
/// <param name="data">存储到缓存中的对象</param>
/// <param name="dependencyKeys">父键值</param>
void
Set(
string
key,
object
data,
params
string
[] dependencyKeys);
/// <summary>
/// 添加一个对象到到缓存
/// </summary>
/// <param name="key">键值</param>
/// <param name="data">存储到缓存中的对象</param>
/// <param name="slidingTime">缓存时间</param>
/// <param name="dependencyKeys">父键值</param>
void
Set(
string
key,
object
data, TimeSpan slidingTime,
params
string
[] dependencyKeys);
/// <summary>
/// 添加一个绝对过期时间的对象到缓存
/// </summary>
/// <param name="key">缓存键值</param>
/// <param name="data">缓存对象</param>
/// <param name="expiredTime">绝对过期时间</param>
/// <param name="dependencyKeys">父键值</param>
void
Set(
string
key,
object
data, DateTime expiredTime,
params
string
[] dependencyKeys);
/// <summary>
/// 添加一个对象到到缓存
/// </summary>
/// <param name="key">键值</param>
/// <param name="data">存储到缓存中的对象</param>
/// <param name="cacheExpiration">缓存过期类型</param>
/// <param name="dependencyKeys">父键值</param>
void
Set(
string
key,
object
data, CacheExpirationTypes cacheExpiration,
params
string
[] dependencyKeys);
/// <summary>
/// 添加文件依赖对象到缓存
/// </summary>
/// <param name="key">键值</param>
/// <param name="value">存储到缓存中的对象</param>
/// <param name="dependencyFiles">依赖文件项</param>
void
SetFile(
string
key,
object
value,
params
string
[] dependencyFiles);
/// <summary>
/// 添加文件依赖对象到缓存
/// </summary>
/// <param name="key">键值</param>
/// <param name="value">存储到缓存中的对象</param>
/// <param name="expiredTime">绝对过期时间</param>
/// <param name="dependencyFiles">依赖文件项</param>
void
SetFile(
string
key,
object
value, DateTime expiredTime,
params
string
[] dependencyFiles);
/// <summary>
/// 添加文件依赖对象到缓存
/// </summary>
/// <param name="key">键值</param>
/// <param name="value">存储到缓存中的对象</param>
/// <param name="slidingTime">缓存持续时间</param>
/// <param name="dependencyFiles">依赖文件项</param>
void
SetFile(
string
key,
object
value, TimeSpan slidingTime,
params
string
[] dependencyFiles);
/// <summary>
/// 判断是否已经缓存
/// </summary>
/// <param name="key">键值</param>
/// <returns>是否存在</returns>
bool
IsSet(
string
key);
/// <summary>
/// 移除缓存
/// </summary>
/// <param name="key">键值</param>
void
Remove(
string
key);
/// <summary>
/// 按模式移除缓存
/// </summary>
/// <param name="pattern">正则表达式模式</param>
void
RemoveByPattern(
string
pattern);
/// <summary>
/// 清空缓存
/// </summary>
void
Clear();
}