using System;
using Microsoft.Practices.EnterpriseLibrary.Caching;
using Microsoft.Practices.EnterpriseLibrary.Caching.Expirations;namespace SpecialSale.Sys.SysCache
{
/// <summary>
/// 缓存过期类型枚举
/// </summary>
public enum EnumCacheExpirationType
{
/// <summary>
/// 绝对过期
/// </summary>
AbsoluteTime = 1,
/// <summary>
/// 固定过期
/// </summary>
SlidingTime = 2,
/// <summary>
/// 指定过期格式,以特定的格式来过期
/// </summary>
ExtendedFormatTime=3,
/// <summary>
/// 文件依赖
/// </summary>
FileDependency=4,
} public static class CacheHelper
{
//2种建立CacheManager的方式
//ICacheManager cache = EnterpriseLibraryContainer.Current.GetInstance<ICacheManager>();
private static ICacheManager cache = CacheFactory.GetCacheManager(); /// <summary>
/// 添加缓存
/// </summary>
/// <param name="key">键</param>
/// <param name="value">值</param>
/// <param name="type">缓存过期类型</param>
public static void Add(string key, object value, EnumCacheExpirationType type)
{
switch (type)
{
case EnumCacheExpirationType.AbsoluteTime:
cache.Add(key, value, CacheItemPriority.Normal, new SysCacheItemRefreshAction(), new AbsoluteTime(TimeSpan.FromMinutes(15)));
break;
case EnumCacheExpirationType.SlidingTime:
cache.Add(key, value, CacheItemPriority.Normal, new SysCacheItemRefreshAction(), new SlidingTime(TimeSpan.FromMinutes(15)));
break;
case EnumCacheExpirationType.ExtendedFormatTime:
throw new Exception("暂时不支持 ExtendedFormatTime 过期");
break;
case EnumCacheExpirationType.FileDependency:
throw new Exception("暂时不支持 FileDependency 过期");
break;
}
} /// <summary>
/// 获取缓存对象
/// </summary>
/// <param name="key">键</param>
/// <returns></returns>
public static T GetCache<T>(string key) where T:class
{
return cache.GetData(key) as T;
} /// <summary>
/// 移除缓存对象
/// </summary>
/// <param name="key">键</param>
public static void RemoveCache(string key)
{
cache.Remove(key);
}
} /// <summary>
/// 自定义缓存刷新操作
/// </summary>
[Serializable]
public class SysCacheItemRefreshAction : ICacheItemRefreshAction
{
#region ICacheItemRefreshAction 成员 /// <summary>
/// 自定义刷新操作
/// </summary>
/// <param name="removedKey">移除的键</param>
/// <param name="expiredValue">过期的值</param>
/// <param name="removalReason">移除理由</param>
void ICacheItemRefreshAction.Refresh(string removedKey, object expiredValue, CacheItemRemovedReason removalReason)
{
if (removalReason == CacheItemRemovedReason.Expired)
{
ICacheManager cache = CacheFactory.GetCacheManager();
cache.Add(removedKey, expiredValue);
}
}
#endregion
}
}
企业库5.0——缓存应用
原创
©著作权归作者所有:来自51CTO博客作者xxj_jing的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
详讲openGauss 5.0 单点企业版如何部署_Centos7_x86
openGauss支持单机部署和单机HA部署两种部署方式。
python 数据库 openGauss Centos -
企业库5.0——缓存使用说明(及初级错误解决)
---------------------------------------------------问题1:未能加载文件或程序集“Microsoft.Practices.EnterpriseLibrary.Common
library microsoft dll caching application -
企业库5.0——执行带有输入、输出参数的存储过程
执行带有输入、输出和返回查询结果集的‘存储过程’最典型的实例就是“分页存储过程“了。
存储 command object null string -
基于微软企业库5.0连接oracle数据库进行企业级开发
基于微软企业库5.0连接oracle数据库进行企业级开发 很多人都习惯与用微软企业库5.0连接Sql Server进行企业级开发。 下面
oracle 数据库 微软 sql server express -
微软企业库5.0学习笔记(四十三)数据验证模块
概况 任何接受用户或者是其他系统输入的应用,一定要确保信息是合法的,符合特定的规则。例如:在处理一个订单的时候,需要检查客户的电话号码一
微软企业库5.0 Validation 合法性验证 microsoft