• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Asp.Net中Cache操作类实例详解

    本文以一个Asp.Net的Cache操作类实例代码来详细描述了cache缓存的结构及实现方法,完整代码如下所示:

    /// head>
    /// function>
    ///  存储类(存储UserInfo信息)
    /// /function>
    /// description>
    ///  用Cache存储用户信息
    ///  在指定间隔(TimeOut)内取,则可以从Cache中取,
    ///  如果超出存储时间,则从数据库取用户信息数据
    ///  作為所有用户信息的存儲類.
    /// /description>
    /// author>
    ///  name>ChengKing/name>  
    /// /author>
    /// /head>
    using System;
    using System.Web;
    using System.Web.Caching;
    namespace Common
    {   
     /// summary>
     /// 存储类(存储UserInfo信息)
     /// /summary>
     public class Storage
     {
     public Storage()
     {
      //
      // TODO: 在此处添加构造函数逻辑
      //
     }
     #region 方法
     //实现“一键一值”存储方法,最普通的存储方法  
            //(“一键一值”指一个Identify存储一个值,下面还有一个“一键多值”方法,因为有时候需要一个键存储多个变量对象值)
            public static bool InsertIdentify(string strIdentify,object Info)
     {  
      if(strIdentify != null  strIdentify.Length != 0  userInfo != null)
      {
      //建立回调委托的一个实例
        CacheItemRemovedCallback callBack =new CacheItemRemovedCallback(onRemove);
      //以Identify为标志,将userInfo存入Cache
      HttpContext.Current.Cache.Insert(strIdentify,userInfo,null, 
            System.DateTime.Now.AddSeconds(300),
            System.Web.Caching.Cache.NoSlidingExpiration, 
            System.Web.Caching.CacheItemPriority.Default,
            callBack);
      return true;
      }  
      else
      {
      return false;
      }
     }
     //判断存储的"一键一值"值是否还存在(有没有过期失效或从来都未存储过)
          public static bool ExistIdentify(string strIdentify)
     {
      if(HttpContext.Current.Cache[strIdentify] != null)
      {
      return true;
      }
      else
      {
      return false;
      }
     }
     //插入"一键多值"方法
     //***其中 StorageInfType是一个Enum,里面存有三种类型: UserInf SysInf PageInf 
     //这个枚举如下:
     /*
          public enum StorageInfType
          {
        /// summary>用户信息/summary>
          UserInf = 0,
        /// summary>页面信息/summary>
        PageInf = 1, 
        /// summary>系统信息/summary>
            SysInf = 2
           }
            //此枚举是自己定义的.可根据需要定义不同的枚举 
            //加个枚举目的是实现“一键多值”存储方法,事实上Cache中是存放了多个变量的,只不过被这个类封装了,
            //程序员感到就好像是“一键一值”.  这样做目的是可以简化开发操作,否则程序员要存储几个变量就得定义几个Identify.
     public static bool InsertCommonInf(string strIdentify,StorageInfType enumInfType,object objValue)
     {  
      if(strIdentify != null  strIdentify != ""  strIdentify.Length != 0  objValue != null)
      {
      //RemoveCommonInf(strIdentify,enumInfType); 
      //建立回调委托的一个实例
            CacheItemRemovedCallback callBack =new CacheItemRemovedCallback(onRemove);
      if(enumInfType == StorageInfType.UserInf)
      {  
        //以用户UserID+信息标志(StorageInfType枚举),将userInfo存入Cache
        HttpContext.Current.Cache.Insert(strIdentify+StorageInfType.UserInf.ToString(),objValue,null, 
             System.DateTime.Now.AddSeconds(18000),    //单位秒
             System.Web.Caching.Cache.NoSlidingExpiration, 
             System.Web.Caching.CacheItemPriority.Default,
             callBack); 
      }
      if(enumInfType == StorageInfType.PageInf)
      {
       //以用户UserID+信息标志(StorageInfType枚举),将PageInfo存入Cache
         HttpContext.Current.Cache.Insert(strIdentify+StorageInfType.PageInf.ToString(),objValue,null, 
              System.DateTime.Now.AddSeconds(18000),
              System.Web.Caching.Cache.NoSlidingExpiration, 
              System.Web.Caching.CacheItemPriority.Default,
              callBack); 
      }
      if(enumInfType == StorageInfType.SysInf)
      {
       //以用户UserID+信息标志(StorageInfType枚举),将SysInfo存入Cache
       HttpContext.Current.Cache.Insert(strIdentify+StorageInfType.SysInf.ToString(),objValue,null, 
              System.DateTime.Now.AddSeconds(18000),
               System.Web.Caching.Cache.NoSlidingExpiration, 
              System.Web.Caching.CacheItemPriority.Default,
              callBack); 
      }
      return true;
      }
      return false;
     }
            //读取“一键多值”Identify的值
            public static bool ReadIdentify(string strIdentify,out UserInfo userInfo)
     {
      //取出值
      if((UserInfo)HttpContext.Current.Cache[strIdentify] != null)
      {
      userInfo = (UserInfo)HttpContext.Current.Cache[strIdentify];
      if(userInfo == null)
      {
       return false;
      }
      return true;
      }  
      else
      {
      userInfo = null;
      return false;
      }  
     }
     //手动移除“一键一值”对应的值
            public static bool RemoveIdentify(string strIdentify)
     {
      //取出值
      if((UserInfo)HttpContext.Current.Cache[strIdentify] != null)
      {
      HttpContext.Current.Cache.Remove(strIdentify);    
      }  
      return true; 
     }
            //此方法在值失效之前调用,可以用于在失效之前更新数据库,或从数据库重新获取数据
     private static void onRemove(string strIdentify, object userInfo,CacheItemRemovedReason reason)
     {
     }
     #endregion
     } 
    }
    

    您可能感兴趣的文章:
    • asp.net(C#)遍历memcached缓存对象
    • Asp.Net Cache缓存使用代码
    • .net/c# memcached缓存获取所有缓存键的方法步骤
    • ASP.NET OutputCache详解
    • asp.net中Session缓存与Cache缓存的区别分析
    • ASP.NET中Application和Cache的区别分析
    • .net清空所有Cache的实现代码
    • ASP.NET Cache的一些总结分享
    • asp.net 使用驻留在页面中的Cache缓存常用可定时更新的数据
    • .net如何使用Cache框架给程序添加Cache
    上一篇:asp.net实现访问局域网共享目录下文件的解决方法
    下一篇:Asp.Net性能优化技巧汇总
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Asp.Net中Cache操作类实例详解 Asp.Net,中,Cache,操作,类,实例,