Cahce缓存操作类

来源:互联网 发布:淘宝怎么看卖家销量 编辑:程序博客网 时间:2024/06/05 16:46

缓存操作类

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    }}
原创粉丝点击