zl程序教程

您现在的位置是:首页 >  后端

当前栏目

EnterpriseLibraryfor.NETFramework2.0缓存使用实例

实例缓存 使用
2023-06-13 09:15:43 时间

EnterpriseLibraryfor.NETFramework2.0是微软发布的企业库,它支持.NETFramework2.0。并且由一系列的企业应用程序块来构成。本文即以实例展示了EnterpriseLibraryfor.NETFramework2.0缓存的使用方法,供大家参考。

关键代码如下:

usingMicrosoft.Practices.EnterpriseLibrary.Caching;
usingMicrosoft.Practices.EnterpriseLibrary.Caching.Expirations;
usingSystem;

namespaceETLUtilHelpV2
{
///<summary>
///EnterpriseLibraryfor.NETFramework2.0缓存工具类
///</summary>
publicclassETLCacheToolV2
{
/*
*在CachingApplicationBlock中,主要提供以下四种保存缓存数据的途径,
*分别是:内存存储(默认)、独立存储(IsolatedStorage)、
*数据库存储(DataBaseCacheStorage)和自定义存储(CustomCacheStorage)。
*In-Memory:保存在内存中。
*IsolatedStorageCacheStore:系统将缓存的信息保存在独立文件中(C:\Users\<<username>>\AppData\Local\IsolatedStorage)。
*DataCacheStorage:将缓存数据保存在数据库中。(需要运行CreateCachingDatabase.sql脚本)
*CustomCacheStorage:自己扩展的处理器。我们可以将数据保存在注册表中或文本文件中。
*
*缓存等级,在企业库的缓存模块中已经提供了4个缓存等级:Low,Normal,High和NotRemovable,在超出最大缓存数量后会自动根据缓存等级来移除对象。
*过期方式,企业库默认提供4种过期方式
*AbsoluteTime:绝对是时间过期,传递一个时间对象指定到时过期
*SlidingTime:缓存在最后一次访问之后多少时间后过期,默认为2分钟,有2个构造函数可以指定一个过期时间或指定一个过期时间和一个最后使用时
*ExtendedFormatTime:指定过期格式,以特定的格式来过期,通过ExtendedFormat.cs类来包装过期方式,具体可参照ExtendedFormat.cs,源代码中已经给出了很多方式
*FileDependency:依赖于文件过期,当所依赖的文件被修改则过期,这个我觉得很有用,因为在许多网站,如论坛、新闻系统等都需要大量的配置,可以将配置文件信息进行缓存,将依赖项设为配置文件,这样当用户更改了配置文件后通过ICacheItemRefreshAction.Refresh可以自动重新缓存。
*/

/////<summary>
/////自定义缓存刷新操作
/////</summary>
//[Serializable]
//publicclassCacheItemRefreshAction:ICacheItemRefreshAction
//{
//#regionICacheItemRefreshAction成员
/////<summary>
/////自定义刷新操作
/////</summary>
/////<paramname="removedKey">移除的键</param>
/////<paramname="expiredValue">过期的值</param>
/////<paramname="removalReason">移除理由</param>
//voidICacheItemRefreshAction.Refresh(stringremovedKey,objectexpiredValue,CacheItemRemovedReasonremovalReason)
//{
//if(removalReason==CacheItemRemovedReason.Expired)
//{
//CacheManagercache=CacheFactory.GetCacheManager();
//cache.Add(removedKey,expiredValue);
//}
//}
//#endregion
//}

staticCacheManagerCacheMgr=null;
staticETLCacheToolV2()
{
CacheMgr=CacheFactory.GetCacheManager();
}
///<summary>
///获取CacheManager实例
///</summary>
///<returns>CacheManager</returns>
publicstaticCacheManagerInstance()
{
returnCacheMgr;
}
///<summary>
///添加缓存
///</summary>
///<paramname="key">键</param>
///<paramname="value">值</param>
publicstaticvoidAdd(stringkey,objectvalue)
{
CacheMgr.Add(key,value);
}
///<summary>
///添加缓存_滑动过期_小时
///</summary>
///<paramname="key">键</param>
///<paramname="value">值</param>
///<paramname="hour">小时</param>
publicstaticvoidAddWithHour(stringkey,objectvalue,inthour)
{
CacheMgr.Add(key,value,CacheItemPriority.Normal,null,newSlidingTime(TimeSpan.FromHours(hour)));
}
///<summary>
///添加缓存_滑动过期_天
///</summary>
///<paramname="key">键</param>
///<paramname="value">值</param>
///<paramname="days">天</param>
publicstaticvoidAddWithDay(stringkey,objectvalue,intdays)
{
CacheMgr.Add(key,value,CacheItemPriority.Normal,null,newSlidingTime(TimeSpan.FromDays(days)));
}
///<summary>
///添加缓存_滑动过期_毫秒
///</summary>
///<paramname="key">键</param>
///<paramname="value">值</param>
///<paramname="millisecond">毫秒</param>
publicstaticvoidAddWithMillisecond(stringkey,objectvalue,intmillisecond)
{
CacheMgr.Add(key,value,CacheItemPriority.Normal,null,newSlidingTime(TimeSpan.FromMilliseconds(millisecond)));
}
///<summary>
///添加缓存_滑动过期_分钟
///</summary>
///<paramname="key">键</param>
///<paramname="value">值</param>
///<paramname="minutes">分钟</param>
publicstaticvoidAddWithMinutes(stringkey,objectvalue,intminutes)
{
CacheMgr.Add(key,value,CacheItemPriority.Normal,null,newSlidingTime(TimeSpan.FromMinutes(minutes)));
}
///<summary>
///添加缓存_滑动过期_秒
///</summary>
///<paramname="key">键</param>
///<paramname="value">值</param>
///<paramname="seconds">秒</param>
publicstaticvoidAddWithSeconds(stringkey,objectvalue,intseconds)
{
CacheMgr.Add(key,value,CacheItemPriority.Normal,null,newSlidingTime(TimeSpan.FromSeconds(seconds)));
}
///<summary>
///添加缓存_滑动过期_文件依赖
///</summary>
///<paramname="key">键</param>
///<paramname="value">值</param>
///<paramname="filePath">文件路径</param>
publicstaticvoidAddFileDependency(stringkey,objectvalue,stringfilePath)
{
FileDependency_fileDependency=newFileDependency(filePath);
CacheMgr.Add(key,value,CacheItemPriority.Normal,null,_fileDependency);
}
///<summary>
///添加缓存_滑动过期_小时
///</summary>
///<paramname="key">键</param>
///<paramname="value">值</param>
///<paramname="hour">小时</param>
///<paramname="refreshAction">ICacheItemRefreshAction</param>
publicstaticvoidAddWithHour(stringkey,objectvalue,inthour,ICacheItemRefreshActionrefreshAction)
{
CacheMgr.Add(key,value,CacheItemPriority.Normal,refreshAction,newSlidingTime(TimeSpan.FromHours(hour)));
}
///<summary>
///添加缓存_滑动过期_天
///</summary>
///<paramname="key">键</param>
///<paramname="value">值</param>
///<paramname="days">天</param>
///<paramname="refreshAction">ICacheItemRefreshAction</param>
publicstaticvoidAddWithDay(stringkey,objectvalue,intdays,ICacheItemRefreshActionrefreshAction)
{
CacheMgr.Add(key,value,CacheItemPriority.Normal,refreshAction,newSlidingTime(TimeSpan.FromDays(days)));
}
///<summary>
///添加缓存_滑动过期_毫秒
///</summary>
///<paramname="key">键</param>
///<paramname="value">值</param>
///<paramname="millisecond">毫秒</param>
///<paramname="refreshAction">ICacheItemRefreshAction</param>
publicstaticvoidAddWithMillisecond(stringkey,objectvalue,intmillisecond,ICacheItemRefreshActionrefreshAction)
{
CacheMgr.Add(key,value,CacheItemPriority.Normal,refreshAction,newSlidingTime(TimeSpan.FromMilliseconds(millisecond)));
}
///<summary>
///添加缓存_滑动过期_分钟
///</summary>
///<paramname="key">键</param>
///<paramname="value">值</param>
///<paramname="minutes">分钟</param>
///<paramname="refreshAction">ICacheItemRefreshAction</param>
publicstaticvoidAddWithMinutes(stringkey,objectvalue,intminutes,ICacheItemRefreshActionrefreshAction)
{
CacheMgr.Add(key,value,CacheItemPriority.Normal,refreshAction,newSlidingTime(TimeSpan.FromMinutes(minutes)));
}
///<summary>
///添加缓存_滑动过期_秒
///</summary>
///<paramname="key">键</param>
///<paramname="value">值</param>
///<paramname="seconds">秒</param>
///<paramname="refreshAction">ICacheItemRefreshAction</param>
publicstaticvoidAddWithSeconds(stringkey,objectvalue,intseconds,ICacheItemRefreshActionrefreshAction)
{
CacheMgr.Add(key,value,CacheItemPriority.Normal,refreshAction,newSlidingTime(TimeSpan.FromSeconds(seconds)));
}
///<summary>
///添加缓存_滑动过期_文件依赖
///</summary>
///<paramname="key">键</param>
///<paramname="value">值</param>
///<paramname="filePath">文件路径</param>
///<paramname="refreshAction">ICacheItemRefreshAction</param>
publicstaticvoidAddFileDependency(stringkey,objectvalue,stringfilePath,ICacheItemRefreshActionrefreshAction)
{
FileDependency_fileDependency=newFileDependency(filePath);
CacheMgr.Add(key,value,CacheItemPriority.Normal,refreshAction,_fileDependency);
}
///<summary>
///清空缓存
///</summary>
publicstaticvoidFlush()
{
CacheMgr.Flush();
}
///<summary>
///移出缓存
///</summary>
///<paramname="key"></param>
publicstaticvoidRemove(stringkey)
{
if(CacheMgr.Contains(key))
CacheMgr.Remove(key);
}
///<summary>
///获取缓存
///</summary>
///<paramname="key">键</param>
///<returns>值</returns>
publicstaticobjectGetData(stringkey)
{
if(CacheMgr.Contains(key))
returnCacheMgr.GetData(key);
returnnull;
}
///<summary>
///获取缓存
///</summary>
///<typeparamname="T">泛型</typeparam>
///<paramname="key">键</param>
///<returns>值</returns>
publicstaticTGetData<T>(stringkey)
{
if(CacheMgr.Contains(key))
return(T)CacheMgr.GetData(key);
returndefault(T);
}
}
}

读者可在自身项目中对上述代码加以测试,相信会对大家的C#程序设计起到一定的帮助作用。