Cache Helper类

using System;
using System.Collections.Generic;
using System.Web;
using System.Collections;
using System.Web.Caching;

namespace DMSite.Common
{
    /// <summary>
    /// 服务器缓存帮助类
    /// </summary>
    public class CacheHelper
    {
        /// <summary>
        /// 创建缓存项的文件依赖
        /// </summary>
        /// <param name="key">缓存Key</param>
        /// <param name="obj">object对象</param>
        /// <param name="fileName">文件绝对路径</param>
        public static void InsertFile(string key, object obj, string fileName)
        {
            //创建缓存依赖项
            CacheDependency dep = new CacheDependency(fileName);
            //创建缓存
            HttpRuntime.Cache.Insert(key, obj, dep);
        }

        /// <summary>
        /// 创建缓存项过期
        /// </summary>
        /// <param name="key">缓存Key</param>
        /// <param name="obj">object对象</param>
        public static void Insert(string key, object obj)
        {
            if (obj != null)
            {
                if (IsExist(key))
                {
                    HttpRuntime.Cache[key] = obj;
                }
                else
                {
                    int expires = ConvertHelper.ToInt(ConfigHelper.GetAppSettings("TimeCache"));
                    HttpRuntime.Cache.Insert(key, obj, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, expires, 0));
                }

            }
        }
        /// <summary>
        /// 判断缓存对象是否存在
        /// </summary>
        /// <param name="strKey">缓存键值名称</param>
        /// <returns>是否存在true 、false</returns>
        public static bool IsExist(string strKey)
        {
            return HttpRuntime.Cache[strKey] != null;
        }
        /// <summary>
        /// 获取缓存对象
        /// </summary>
        /// <param name="key">缓存Key</param>
        /// <returns>object对象</returns>
        public static object GetCache(string key)
        {
            if (string.IsNullOrEmpty(key))
                return null;
            if (ConfigHelper.GetAppSettings("IsCache") == "false")
            {
                return null;
            }

            return HttpRuntime.Cache.Get(key);
        }

        /// <summary>
        /// 获取缓存对象
        /// </summary>
        /// <typeparam name="T">T对象</typeparam>
        /// <param name="key">缓存Key</param>
        /// <returns></returns>
        public static T Get<T>(string key)
        {
            object obj = GetCache(key);
            return obj == null ? default(T) : (T)obj;
        }

        /// <summary>
        /// 移除指定数据缓存
        /// </summary>
        public static void RemoveCache(string CacheKey)
        {
            System.Web.Caching.Cache _cache = HttpRuntime.Cache;
            _cache.Remove(CacheKey);
        }

        /// <summary>
        /// 移除全部缓存
        /// </summary>
        public static void RemoveAllCache()
        {
            System.Web.Caching.Cache _cache = HttpRuntime.Cache;
            IDictionaryEnumerator CacheEnum = _cache.GetEnumerator();
            while (CacheEnum.MoveNext())
            {
                _cache.Remove(CacheEnum.Key.ToString());
            }
        }
    }
}
时间: 2024-11-02 23:38:51

Cache Helper类的相关文章

之前采用的是Helper类的方法重构时改用了扩展方法

在手机端输入网址不方全,通常会将网址做成一个二维码,然后用手机扫一下就可以打开预览.我们每改一下样式,就在手机上点一下刷新或电脑上按一下F5,这在最初的时候,也不觉得有什么问题,因为拿到我手上的静态页,通常由切片的同事做好了兼容性测试,需要一边刷新浏览器,一边改样式的机会不多.随着我们尝试用Less,stylus,这样的css工具,一方面,需要用到gulp这样的工具在后台自动监听我们的样式改动,另一方面,手动刷新的时候,gulp的脚本未必转换完了.这时候迫切需要浏览器自动刷新. 到此为止如果还没

MVC中使用HTML Helper类扩展HTML控件

文章摘自:http://www.cnblogs.com/zhangziqiu/archive/2009/03/18/1415005.html MVC在view页面,经常需要用到很多封装好的HTML控件,这篇文章主要讲述,怎么自己扩展和定制自己需要的控件. ---------------------------------------------------------- HTML Helper类是ASP.NET MVC框架中提供的生成HTML控件代码的类. 本质上与第一种方式一样, 只是我们可以

Java逆向基础之Byteman的扩展Helper类

上一篇文章提到我们可以在规则文件中调用自己写的扩展Helper类 看一个例子 新建目标项目和扩展Helper类项目,结构如下 其中目标项目使用上一篇博客的第二个例子的代码 扩展Helper类项目需要用到第三方jar,在C:\byteman-download-4.0.2\lib找到byteman.jar复制过来 TraceHelper.java代码如下 package com.vvvtimes; import org.jboss.byteman.rule.Rule; import org.jbos

枚举类型取值helper类

枚举类型取值: 1.根据枚举下标拿取值(默认为 0,1,2,3,4) 2.根据枚举描述拿到枚举值 3.根据枚举下标拿到枚举值(不限下标,如101开头) 调用方法 调用1:Enum.GetNames(typeof(AddAttributeType))[0];   //注:这个适用于枚举下标为默认0开始的,拿到的值为string类型的枚举值(如果下标超出会报异常) 调用 2:EnumMethodHelper.EnumToDescription("101", typeof(AddAttrib

Task的在主线程处理异常信息的Helper类

最近使用task时候需要把异常记录日志,直接注入非单例模式的实例进入异步线程,在高并发情况下会出现一些问题. 所以需要把异常反馈给主线程 ,并且不在主线程里进行等待,研究相关资料后,自己写了一个简单的helper类封装了下. 1 using System; 2 using System.Threading; 3 using System.Threading.Tasks; 4 5 namespace Xyfy.Helper 6 { 7 /// <summary> 8 /// 9 /// <

Helper 类在Java和C++中的设计

Java 有三个选择 1)采用普通的类 有公有构造函数,没有成员变量,提供了很多成员函数作为方法,调用代码如下: Helper helper = new Helper(); helper.f1(); 这种方法的缺点是创建对象的开销是不必要的,我们知道创建对象意味着,首先要分配内存,然后在该内存上创建对象.在一个大量创建helper对象的场景中,这种负担是很大的. 2)为了避免这种反复创建对象的开销,可以采用Singleton延迟创建技术,确保整个进程中只有一个对象,并且只有第一次调用的时候才会被

ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core

背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供,不过该内存类我看了一下,并没有支持文件的缓存依赖. 因此,在此前提下,预计.NET Core明年出来2.0版本时,可能也没支持文件的缓存依赖,因此,有必要提前准备实现. 在写此文前,我扫了一下园子里关于自定义缓存类的相关文章. 发现很多自定义的缓存类文章都简单停留在对字典的增删改查. 因此,决定补充

ASP.NET HttpRuntime.Cache缓存类使用总结

1.高性能文件缓存key-value存储—Redis 2.高性能文件缓存key-value存储—Memcached 1.前言 a.在Web开发中,我们经常能够使用到缓存对象(Cache),在ASP.NET中提供了两种缓存对象,HttpContext.Current.Cache和HttpRuntime.Cache,那么他们有什么区别呢?下面简单描述一下: (1):HttpContext.Current.Cache 为当前Http请求获取Cache对象,通俗来说就是由于此缓存封装在了HttpCont

C#语法糖之 cache操作类 asp.net

因为考虑到我下面我将写session cookies 等 操作类 ,与cache具有共性. 所以都统一继承了IHttpStorageObject  abstract class 来保函数风格的统一 ,但是又为了调用方便,抽象中又使用了单例来简化调用. 使用方法很简单: //声名一个数据集合 var listString = new List<string>() { "a", "b", "c" }; //缓存key string key