开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 2802|回复: 0

分享一个自己总结的web缓存处理类

[复制链接]

0

精华

10

贡献

38

赞扬

实习版主

帖子
18
软币
158
在线时间
10 小时
注册时间
2013-9-30
发表于 2014-5-12 14:00:43 | 显示全部楼层 |阅读模式
[C#] 纯文本查看 复制代码
using System;
using System.Web;

namespace OIFrameWork.Common
{
    /// <summary>
    /// 数据缓存类
    /// </summary>
    public class DataCache
    {
        #region "方法调用方法"
        private static DataCache _instance;
        private static readonly object CacheLock = new object();

        public static DataCache GetInstance()
        {
            if (_instance != null) return _instance;
            lock (CacheLock)
            {
                return _instance ?? (_instance = new DataCache());
            }
        }

        #endregion

        #region "主题方法"

        /// <summary>
        /// 获取指定键值的缓存数据
        /// </summary>
        /// <param name="cacheKey">缓存的键值</param>
        /// <returns>返回缓存的数据</returns>
        public object GetCache(string cacheKey)
        {
            var objCache = HttpRuntime.Cache;
            return objCache[cacheKey];
        }

        public void RemoveCache(String cacheKey)
        {
            HttpRuntime.Cache.Remove(cacheKey);
        }

        /// <summary>
        /// 设置缓存数据,
        /// </summary>
        /// <param name="cacheKey">键值名</param>
        /// <param name="obj">缓存对象</param>
        public void AddCache(string cacheKey, object obj)
        {
            var objCache = HttpRuntime.Cache;
            objCache.Insert(cacheKey, obj);
        }

        /// <summary>
        /// 设置缓存,并指定过期时间,以及过期后可以分配的时间
        /// </summary>
        /// <param name="cacheKey">缓存的键值名</param>
        /// <param name="obj">需要缓存的对象</param>
        /// <param name="absoluteExpiration">所插入对象将过期并被从缓存中移除的时间。如果使用绝对过期,则 slidingExpiration 参数必须为 NoSlidingExpiration</param>
        /// <param name="slidingExpiration">最后一次访问所插入对象时与该对象过期时之间的时间间隔.如果该值等效于 20 分钟,则对象在最后一次被访问 20 分钟之后将过期并被从缓存中移除。</param>
        public void AddCache(string cacheKey, object obj, DateTime absoluteExpiration, TimeSpan slidingExpiration)
        {
            var objCache = HttpRuntime.Cache;
            objCache.Insert(cacheKey, obj, null, absoluteExpiration, slidingExpiration);
        }
        #endregion
    }
}

评分

参与人数 5赞扬 +5 收起 理由
z26483770 + 1 加一点实际应用最好
maple + 1 很给力
yrolive + 1 赞一个
海棠姐姐 + 1 AddCache把移除缓存时的事件公开就更好了.
懦芞 + 1 很给力

查看全部评分

回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-4-19 19:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表