当前位置: 首页 > 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分区
  • 【刷算法】从上往下打印二叉树
  • CSS居中完全指南——构建CSS居中决策树
  • HTML-表单
  • Java超时控制的实现
  • java概述
  • Meteor的表单提交:Form
  • PAT A1050
  • Swoft 源码剖析 - 代码自动更新机制
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 飞驰在Mesos的涡轮引擎上
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 前端技术周刊 2019-02-11 Serverless
  • 浅谈web中前端模板引擎的使用
  • 树莓派 - 使用须知
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 温故知新之javascript面向对象
  • 想写好前端,先练好内功
  • 大数据全解:定义、价值及挑战
  • ​520就是要宠粉,你的心头书我买单
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (1)虚拟机的安装与使用,linux系统安装
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (接口封装)
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (三) diretfbrc详解
  • (十三)Maven插件解析运行机制
  • (万字长文)Spring的核心知识尽揽其中
  • (转) Android中ViewStub组件使用
  • (转) 深度模型优化性能 调参
  • (转)linux 命令大全
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .net 7 上传文件踩坑
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题