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#程序设计起到一定的帮助作用。
相关文章
- sigaction实例
- Jmeter正则表达式提取器获取Token-简单实例「建议收藏」
- shell脚本实例精讲_shell脚本编程实例
- SQL中where语句的用法及实例代码(条件查询)
- CentOS7系统增加swap的操作方法实例
- CSS学习摘要-定位实例详解编程语言
- springboot页面缓存和url缓存实例详解编程语言
- Oracle删除序列语句实例详解(oracle删除序列语句)
- 使用Redis实现分布式缓存的指南(redis使用实例)
- Redis缓存实现实例解析(redis缓存例子)
- 实例开启多个Redis实例之道实现丰富的缓存功能(开启多个redis)
- MySQL的加法运算简介基础知识与实例(mysql中加法运算)
- Oracle数据库中函数应用实例分析(oracle中的函数实例)
- Oracle实例间双向监听实践(oracle两个实例监听)
- GRID拖拽行的实例代码
- asp.net中生成缩略图并添加版权实例代码
- PHP三元运算的2种写法代码实例
- C#Memcached缓存用法实例详解
- Unity3D游戏引擎实现在Android中打开WebView的实例
- C#缓存之SqlCacheDependency用法实例总结