当前位置: 首页 > news >正文

(实战篇)如何缓存数据

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

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

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

(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

相关文章:

  • android 抓包分析
  • 从外形如何分辨iTouch是几代的?
  • Word中使用正则表达式进行查找和替换
  • 打开Windows2008 R2 Server Manager或执行Windows Update时出现0x800F0818错误
  • 针对11.2 RAC丢失OCR和Votedisk所在ASM Diskgroup的恢复手段
  • Linux 获取CPU温度
  • OpenCV第五章练习p163_5~8
  • 用gdbserver调试共享库(二)
  • java类型通配符
  • 用jQuery实现一些导航条切换,显示隐藏
  • ASP.NET 学习笔记_02 Calender的使用
  • VC++2010开发数字图像系统1
  • /bin/rm: 参数列表过长"的解决办法
  • Compressive sensing for large images
  • MySQL分区表例子——List分区
  • [译]Python中的类属性与实例属性的区别
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【译】理解JavaScript:new 关键字
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 2018一半小结一波
  • Effective Java 笔记(一)
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • java2019面试题北京
  • Java反射-动态类加载和重新加载
  • Java应用性能调优
  • Python爬虫--- 1.3 BS4库的解析器
  • SpiderData 2019年2月13日 DApp数据排行榜
  • vue的全局变量和全局拦截请求器
  • 对象管理器(defineProperty)学习笔记
  • 解决iview多表头动态更改列元素发生的错误
  • 每天一个设计模式之命令模式
  • 小程序开发中的那些坑
  • 因为阿里,他们成了“杭漂”
  • 自制字幕遮挡器
  • (007)XHTML文档之标题——h1~h6
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (bean配置类的注解开发)学习Spring的第十三天
  • (C语言)fgets与fputs函数详解
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)setTimeout 和 setInterval 的区别
  • (转)详解PHP处理密码的几种方式
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .Net 6.0 处理跨域的方式
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • /var/spool/postfix/maildrop 下有大量文件
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @GlobalLock注解作用与原理解析