缓存通用管理类 + 缓存 HttpContext.Current.Cache 和 HttpRuntime.Cache 的区别

简介:
 以前写asp.net时用HttpContext.Current.Cache存缓存很好用,今天写了一个windows服务程序,HttpContext.Current.Cache存缓存的时候还好,取的时候一直报错“未将对象引用到实例”很郁闷,查询了一下资料才明白引用程序缓存要用HttpRuntime.Cache...

  我们先看MSDN上的解释:

        HttpContext.Current.Cache:为当前 HTTP 请求获取Cache对象。
        HttpRuntime.Cache:获取当前应用程序的Cache。

附带的写了一个操作缓存的通用类,在应用程序中使用,如果要在asp.net中有,只需把HttpRuntime.Cache改为HttpContext.Current.Cache即可,代码如下:

 


复制代码
using System;

/// <summary>
/// author:Stone_W
/// date:2010.12.1
/// desc:缓存的管理类
/// 注意:要添加对引用 System.Web
/// </summary>
public class MyCacheTools : System.Web.SessionState.IRequiresSessionState
{
    #region 存入Cache
    /// <summary>
    /// 存入Cache
    /// </summary>
    /// <param name="key">缓存key</param>
    /// <param name="value">缓存的值</param>
    /// <param name="time_HH">存xx小时</param>
    /// <returns>是否执行成功[bool]</returns>
    public static bool SetCache(string key, object value, int time_HH)
    {
        bool result = false;
        try
        {
            DateTime dt = DateTime.Now.AddHours(time_HH);
            System.Web.HttpRuntime.Cache.Insert(key, value, null,
                dt, System.Web.Caching.Cache.NoSlidingExpiration);
            result = true;
        }
        catch (Exception ex) { }
        return result;
    }
    #endregion

    #region 取得Cache
    /// <summary>
    /// 取得Cache
    /// </summary>
    /// <param name="key">key</param>
    /// <returns>object类型</returns>
    public static object GetCache(string key)
    {
        return System.Web.HttpRuntime.Cache.Get(key);
    }
    #endregion

    #region 查询Cache是否存在
    /// <summary>
    /// 查询Cache是否存在
    /// </summary>
    /// <param name="key">key 值</param>
    /// <returns>bool</returns>
    public static bool IsCacheExist(string key)
    {
        bool result = false;

        object temp = System.Web.HttpRuntime.Cache.Get(key);
        if (null != temp)
        {
            result = true;
        }
        return result;
    }
    #endregion

}
复制代码
 

 




本文转自王磊的博客博客园博客,原文链接:http://www.cnblogs.com/vipstone/archive/2010/12/01/1893619.html,如需转载请自行联系原作者
目录
相关文章
|
5月前
|
缓存 JavaScript C++
【Vue】—计算属性缓存VS方法以及侦听器的区别
【Vue】—计算属性缓存VS方法以及侦听器的区别
|
2月前
|
存储 缓存
本地缓存和分布式缓存区别
【2月更文挑战第16天】
42 2
本地缓存和分布式缓存区别
|
3月前
|
存储 缓存 前端开发
JavaScrip实现一个有时间限制的缓存类
JavaScrip实现一个有时间限制的缓存类
17 0
|
5月前
|
缓存 NoSQL Java
SpringCache通用缓存学习
SpringCache通用缓存学习
|
7月前
|
存储 缓存 NoSQL
场景应用:缓存穿透、缓存击穿、缓存雪崩有什么区别,该如何解决?
场景应用:缓存穿透、缓存击穿、缓存雪崩有什么区别,该如何解决?
|
9月前
|
存储 缓存 数据处理
缓存与缓冲区的区别
在计算机科学中,缓存(Cache)和缓冲区(Buffer)是两个常见的概念。尽管它们的功能有些相似,但它们在实际应用中具有不同的用途和工作原理。本文将介绍缓存和缓冲区之间的区别。
344 0
|
9月前
|
存储 缓存 JavaScript
本地缓存的区别与联系
本地缓存的区别与联系
|
9月前
|
Web App开发 存储 缓存
什么是强缓存和协商缓存?以及他们的区别?
什么是强缓存和协商缓存?以及他们的区别?
|
10月前
|
存储 缓存 Java
MyBatis 的一级缓存和二级缓存的区别
MyBatis 的一级缓存和二级缓存的区别
72 0
|
10月前
|
缓存 内存技术
硬件 - CPU 缓存 SRAM 与内存 DRAM 的区别
硬件 - CPU 缓存 SRAM 与内存 DRAM 的区别
250 0