分享通用基类库-C#通用缓存类

原创 2012年03月30日 13:37:18
/*************************************************************************************
 * 代码:吴蒋
 * 时间:2012.03.30
 * 说明:缓存公共基类
 * 其他:
 * 修改人:
 * 修改时间:
 * 修改说明:
 ************************************************************************************/
 using System;
 using System.Web.Caching;
 
 namespace Common
 {
     public class DacheHelp
     {
          protected static volatile System.Web.Caching.Cache webCache = System.Web.HttpRuntime.Cache;
 
         /// <summary>
 /// 默认缓存存活期为3600秒(1小时)
 /// </summary>
         protected int _timeOut = 3600;
 
         private static object syncObj = new object();
 
         /// <summary>
 /// 构造函数
 /// </summary>
         static DacheHelp()
         {   
         }
         
         
         /// <summary>
 /// 设置到期相对时间[单位: 秒] 
 /// </summary>
         public virtual int TimeOut
         {
             set { _timeOut = value > 0 ? value : 3600; }
             get { return _timeOut > 0 ? _timeOut : 3600; }
         }
 
 
         /// <summary>
 /// 静态构造函数
 /// </summary>
         public static System.Web.Caching.Cache GetWebCacheObj
         {
             get { return webCache; }
         }
         
         /// <summary>
 /// 加入当前对象到缓存中
 /// </summary>
 /// <param name="objId">对象的键值</param>
 /// <param name="o">缓存的对象</param>
         public virtual void AddObject(string objId, object o)
         {    
             if (objId == null || objId.Length == 0 || o == null)
             {
                 return;
             }
 
             CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(onRemove);
 
             if (TimeOut == 7200)
             {
                 webCache.Insert(objId, o, null, DateTime.MaxValue, TimeSpan.Zero, System.Web.Caching.CacheItemPriority.High, callBack);
             }
             else
             {
                 webCache.Insert(objId, o, null, DateTime.Now.AddSeconds(TimeOut), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, callBack);
             }
         }
 
         /// <summary>
 /// 加入当前对象到缓存中
 /// </summary>
 /// <param name="objId">对象的键值</param>
 /// <param name="o">缓存的对象</param>
         public virtual void AddObjectWith(string objId, object o)
         {
             if (objId == null || objId.Length == 0 || o == null)
             {
                 return;
             }
 
             CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(onRemove);
 
             webCache.Insert(objId, o, null, System.DateTime.Now.AddSeconds(TimeOut), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, callBack);
         }
         
 
         /// <summary>
 /// 加入当前对象到缓存中,并对相关文件建立依赖
 /// </summary>
 /// <param name="objId">对象的键值</param>
 /// <param name="o">缓存的对象</param>
 /// <param name="files">监视的路径文件</param>
         public virtual void AddObjectWithFileChange(string objId, object o, string[] files)
         {
             if (objId == null || objId.Length == 0 || o == null)
             {
                 return;
             }
 
             CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(onRemove);
 
                CacheDependency dep = new CacheDependency(files, DateTime.Now);
 
             webCache.Insert(objId, o, dep, System.DateTime.Now.AddSeconds(TimeOut), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, callBack);
         }
     
 
 
         /// <summary>
 /// 加入当前对象到缓存中,并使用依赖键
 /// </summary>
 /// <param name="objId">对象的键值</param>
 /// <param name="o">缓存的对象</param>
 /// <param name="dependKey">依赖关联的键值</param>
         public virtual void AddObjectWithDepend(string objId, object o, string[] dependKey)
         {
             if (objId == null || objId.Length == 0 || o == null)
             {
                 return;
             }
 
             CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(onRemove);
 
             CacheDependency dep = new CacheDependency(null, dependKey, DateTime.Now);
 
             webCache.Insert(objId, o, dep, System.DateTime.Now.AddSeconds(TimeOut), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, callBack);
         }
 
         /// <summary>
 /// 建立回调委托的一个实例
 /// </summary>
 /// <param name="key"></param>
 /// <param name="val"></param>
 /// <param name="reason"></param>
         public void onRemove(string key, object val, CacheItemRemovedReason reason)
         {
             switch (reason)
             {
                 case CacheItemRemovedReason.DependencyChanged:
                     break;
                 case CacheItemRemovedReason.Expired:
                     {
                         //CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(this.onRemove);
 
 //webCache.Insert(key, val, null, System.DateTime.Now.AddMinutes(TimeOut),
 //    System.Web.Caching.Cache.NoSlidingExpiration,
 //    System.Web.Caching.CacheItemPriority.High,
 //    callBack);
                         break;
                     }
                 case CacheItemRemovedReason.Removed:
                     {
                         break;
                     }
                 case CacheItemRemovedReason.Underused:
                     {
                         break;
                     }
                 default: break;
             }
             //如需要使用缓存日志,则需要使用下面代码
 //myLogVisitor.WriteLog(this,key,val,reason);            
         }
 
         /// <summary>
 /// 删除缓存对象
 /// </summary>
 /// <param name="objId">对象的关键字</param>
         public virtual void RemoveObject(string objId)
         {
             if (objId == null || objId.Length == 0)
             {
                 return;
             }
             webCache.Remove(objId);
         }
 
 
         /// <summary>
 /// 返回一个指定的对象
 /// </summary>
 /// <param name="objId">对象的关键字</param>
 /// <returns>对象</returns>
         public virtual object RetrieveObject(string objId)
         {
             if (objId == null || objId.Length == 0)
             {
                 return null;
             }            
             return webCache.Get(objId);
         }
     }
 }

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

分享通用基类库-C#通用字符串处理类

/************************************************************************************* * 代码:吴蒋 * 时...

C#缓存介绍 Caching通用帮助类代码整理 .net几种缓存概述

Cache的概述及用法和帮助类,cache与session,cookie的区别,cache帮助类
  • sz1103
  • sz1103
  • 2016年12月30日 14:04
  • 4931

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

用C#打造自己的通用数据访问类库(续)

说明:此篇文章是给那些和我一样仍在使用ADO.NET访问数据库的.NET开发人员写的,因为某些原因,比如还在使用.NET3.0以下版本开发.NET应用或者所使用的数据库对ORM支持不是很好,或者是对O...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Asp.net/C#/Mvc 中Cache缓存帮助类

using System; using System.Web; using System.Collections; namespace MSCL { /// /// Cache辅助...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:分享通用基类库-C#通用缓存类
举报原因:
原因补充:

(最多只允许输入30个字)