Cahce缓存操作类

缓存操作类

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using XiaoFeng;
namespace XiaoFeng.Cache
{
    /// <summary>
    /// 缓存操作类
    /// Version : V 1.0
    /// Create Date : 2016-12-24
    /// Author : Jacky
    /// QQ : 7092734
    /// Email : jacky@zhuovi.com
    /// </summary>
    public class CacheHelper
    {
        /// <summary>
        /// 缓存列表
        /// </summary>
        public static CacheData DataList
        {
            get { return new CacheData(); }
        }
        /// <summary>
        /// 获取数据缓存
        /// </summary>
        /// <param name="key">用于引用该对象的缓存键</param>
        /// <returns>指定的缓存项</returns>
        public static object get(string key)
        {
            System.Web.Caching.Cache _ = HttpRuntime.Cache;
            return _[key];
        }
        /// <summary>
        /// 设置数据缓存
        /// </summary>
        /// <param name="key">用于引用该对象的缓存键</param>
        /// <param name="value">要插入缓存中的对象</param>
        public static void set(string key, object value)
        {
            System.Web.Caching.Cache _ = HttpRuntime.Cache;
            _.Insert(key, value);
        }
        /// <summary>
        /// 设置数据缓存
        /// </summary>
        /// <param name="key">用于引用该对象的缓存键</param>
        /// <param name="value">要插入缓存中的对象</param>
        /// <param name="Timeout">最后一次访问所插入对象时与该对象到期时之间的时间间隔。 如果该值等效于 20 分钟,则对象在最后一次被访问 20 分钟之后将到期并被从缓存中移除。如果使用可调到期,则 absoluteExpiration 参数必须为 System.Web.Caching.Cache.NoAbsoluteExpiration。</param>
        public static void set(string key, object value, TimeSpan Timeout)
        {
            System.Web.Caching.Cache _ = HttpRuntime.Cache;
            _.Insert(key, value, null, DateTime.MaxValue, Timeout, System.Web.Caching.CacheItemPriority.NotRemovable, null);
        }
        /// <summary>
        /// 设置数据缓存
        /// </summary>
        /// <param name="key">用于引用该对象的缓存键</param>
        /// <param name="value">要插入缓存中的对象</param>
        /// <param name="path">文件路径或目录</param>
        public static void set(string key, object value, string path)
        {
            System.Web.Caching.Cache _ = HttpRuntime.Cache;
            _.Insert(key, value, new System.Web.Caching.CacheDependency(path));
        }
        /// <summary>
        /// 设置数据缓存
        /// </summary>
        /// <param name="key">用于引用该对象的缓存键</param>
        /// <param name="value">要插入缓存中的对象</param>
        /// <param name="absoluteExpiration">所插入对象将到期并被从缓存中移除的时间。 要避免可能的本地时间问题(例如从标准时间改为夏时制),请使用 System.DateTime.UtcNow,而不是 System.DateTime.Now 作为此参数值。 如果使用绝对到期,则 slidingExpiration 参数必须为 System.Web.Caching.Cache.NoSlidingExpiration。</param>
        /// <param name="slidingExpiration">最后一次访问所插入对象时与该对象到期时之间的时间间隔。 如果该值等效于 20 分钟,则对象在最后一次被访问 20 分钟之后将到期并被从缓存中移除。如果使用可调到期,则 absoluteExpiration 参数必须为 System.Web.Caching.Cache.NoAbsoluteExpiration。</param>
        public static void set(string key, object value, DateTime absoluteExpiration, TimeSpan slidingExpiration)
        {
            System.Web.Caching.Cache _ = HttpRuntime.Cache;
            _.Insert(key, value, null, absoluteExpiration, slidingExpiration);
        }
        /// <summary>
        /// 移除指定数据缓存
        /// </summary>
        /// <param name="key">要移除的缓存项的 System.String 标识符。</param>
        public static void remove(string key)
        {
            System.Web.Caching.Cache _ = HttpRuntime.Cache;
            _.Remove(key);
        }
        /// <summary>
        /// 移除全部缓存
        /// </summary>
        public static void clear()
        {
            System.Web.Caching.Cache _ = HttpRuntime.Cache;
            IDictionaryEnumerator CacheEnum = _.GetEnumerator();
            while (CacheEnum.MoveNext())
                _.Remove(CacheEnum.Key.ToString());
        }
    }
    /// <summary>
    /// 缓存数据操作类
    /// </summary>
    public class CacheData
    {
        #region 构造器
        /// <summary>
        /// 设置缓存数据
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        public CacheData(string key, object value)
        {
            this.add(key, value);
        }
        /// <summary>
        /// 无参构造器
        /// </summary>
        public CacheData() { }
        #endregion

        #region 属性
        /// <summary>
        /// 缓存Key值
        /// </summary>
        private string Key
        {
            get
            {
                return System.AppDomain.CurrentDomain.SetupInformation.ConfigurationFile.ToLower() == "web.config" ? HttpContext.Current.Request.UserHostName.ToLower() : "ZW-PublicCacheKey";
            }
        }
        /// <summary>
        /// 缓存数据
        /// </summary>
        public Dictionary<string, object> data
        {
            get
            {
                var _ = CacheHelper.get(this.Key);
                if (_ == null) CacheHelper.set(this.Key, new Dictionary<string, object>()); return _ == null ? new Dictionary<string, object>() : (Dictionary<string, object>)_;
            }
        }
        #endregion

        #region 方法
        /// <summary>
        /// 添加缓存
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        public void add(string key, object value)
        {
            if (this.data.ContainsKey(key))
            {
                if (!this.data[key].Equals(value))
                {
                    this.data[key] = value; 
                }
            }
            else { this.data.Add(key, value);  }
        }
        /// <summary>
        /// 获取缓存值
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public object get(string key)
        {
            return this.data.ContainsKey(key) ? this.data[key] : null;
        }
        /// <summary>
        /// 移除
        /// </summary>
        /// <param name="key"></param>
        public void remove(string key)
        {
            if(this.data.ContainsKey(key))
                this.data.Remove(key);
        }
        /// <summary>
        /// 清空缓存
        /// </summary>
        public void clear()
        {
            this.data.Clear();
        }
        #endregion
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值