(实战篇)如何缓存数据

前段时间,也就是去年这个时候开始到现在之前一个月左右,一直在忙一个项目,现在完结了,做下总结。

总体而言涉及的东西挺多,于是打算分而破之,分开总结。

总结之一如标题:如何缓存人员数据,直接上项目,先看实现

(1)global.asax文件的Application_Start事件里布下雷区,采集缓存数据

 

  private void Application_Start(object sender, EventArgs e)
        {
            
            #region 获取缓存 
            CacheHelp.SetUserData();
            CacheHelp.SetMenuData(); 
            #endregion 获取缓存
        }

 

 

 

(2)如何缓存数据和获取缓存数据呢?,以SetUserData()为例

 

public class CacheHelp

{

public static void SetUserData()

        {
           CacheManager.Instance.SetCache("USER", new UserBLL().GetCacheUserTable());
        }

}

 

 

 

 (3) 缓存调用类

 

public sealed class CacheManager
    {
        private static readonly object padlock = new object();
        private static IWebCache instance = null;

        public static IWebCache Instance
        {
            get
            {
                lock (padlock)
                {
                    return instance ?? (instance = new WebCache());
                }
            }
    }

 

 

 

(4) 缓存实现类
----------------

 

 public class WebCache : IWebCache
    {
        /// <summary>
        /// 获取缓存数据
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public object GetCache(string key)
        {
            return FWConfig.CurContext != null ? FWConfig.CurContext.Application[key] : null;
        }

        /// <summary>
        /// 设置缓存数据
        /// </summary>
        /// <param name="key"></param>
        /// <param name="obj"></param>
        public void SetCache(string key, object obj)
        {
            if (FWConfig.CurContext != null) FWConfig.CurContext.Application[key] = obj;
        }
    }

 

 

 

 

(5) 缓存接口
---------------------

 /// <summary>
    /// 缓存接口
    /// </summary>
    public interface IWebCache
    {
        /// <summary>
        /// 获取缓存
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        object GetCache(string key);

        /// <summary>
        /// 设置缓存
        /// </summary>
        /// <param name="key"></param>
        /// <param name="obj"></param>
        void SetCache(string key, object obj);
    }

 

 

(6) 提供给页面获取的缓存信息

public class CacheHelp

{


   public static DataTable UserDt
        {
            get
            {
                DataTable dtOrg = WebCacheManager.Instance.GetApplicationCache("USER") as DataTable;
                if (dtOrg == null)
                {
                    SetUserData();
                    return CacheManager.Instance.GetCache("USER") as DataTable;
                }
                else
                {
                    return CacheManager.Instance.GetCache("USER") as DataTable;
                }
            }
        }

}

 

 

 

注: FWConfig.CurContext

 

public class FWConfig
    {
    public static HttpContext CurContext
          {
             get  {return HttpContext.Current;  }

  }}

 

                                                               

转载于:https://www.cnblogs.com/jangwewe/archive/2013/03/15/2960855.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值