国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

C#語(yǔ)法糖之 cache操作類 asp.net

2019-11-17 02:09:23
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

C#語(yǔ)法糖之 cache操作類 asp.net

因?yàn)榭紤]到我下面我將寫(xiě)session cookies 等 操作類 ,與cache具有共性。 所以都統(tǒng)一繼承了IHttpStorageObject abstract class來(lái)保函數(shù)風(fēng)格的統(tǒng)一 ,但是又為了調(diào)用方便,抽象中又使用了單例來(lái)簡(jiǎn)化調(diào)用。

使用方法很簡(jiǎn)單:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web;using System.Web.Caching;using System.Collections;using System.Linq.ExPRessions;namespace SyntacticSugar{    /// <summary>    /// ** 描述:緩存操作類    /// ** 創(chuàng)始時(shí)間:2015-6-9    /// ** 修改時(shí)間:-    /// ** 作者:sunkaixuan    /// ** 使用說(shuō)明:http://www.survivalescaperooms.com/sunkaixuan/p/4563462.html    /// </summary>    /// <typeparam name="K">鍵</typeparam>    /// <typeparam name="V">值</typeparam>    public class CacheManager<V> : IHttpStorageObject<V>    {        #region 全局變量        private static CacheManager<V> _instance = null;        private static readonly object _instanceLock = new object();        #endregion        #region 構(gòu)造函數(shù)        private CacheManager() { }        #endregion        #region  屬性        /// <summary>                 ///根據(jù)key獲取value             /// </summary>                 /// <value></value>              public override V this[string key]        {            get { return (V)HttpRuntime.Cache[CreateKey(key)]; }        }        #endregion        #region 公共函數(shù)        /// <summary>                 /// key是否存在               /// </summary>                 /// <param name="key">key</param>                 /// <returns> /// 存在<c>true</c> 不存在<c>false</c>.        /// /// </returns>                 public override bool ContainsKey(string key)        {            return HttpRuntime.Cache[CreateKey(key)] != null;        }        /// <summary>                 /// 獲取緩存值                 /// </summary>                 /// <param name="key">key</param>                 /// <returns></returns>                 public override V Get(string key)        {            return (V)HttpRuntime.Cache.Get(CreateKey(key));        }        /// <summary>                 /// 獲取實(shí)例 (單例模式)               /// </summary>                 /// <returns></returns>                 public static CacheManager<V> GetInstance()        {            if (_instance == null)                lock (_instanceLock)                    if (_instance == null)                        _instance = new CacheManager<V>();            return _instance;        }        /// <summary>                 /// 插入緩存(默認(rèn)20分鐘)                /// </summary>                 /// <param name="key"> key</param>                 /// <param name="value">value</param>                  public override void Add(string key, V value)        {            Add(key, value, Minutes*20);        }        /// <summary>                 /// 插入緩存                /// </summary>                 /// <param name="key"> key</param>                 /// <param name="value">value</param>                 /// <param name="cacheDurationInSeconds">過(guò)期時(shí)間單位秒</param>                 public  void Add(string key, V value, int cacheDurationInSeconds)        {            Add(key, value, cacheDurationInSeconds, CacheItemPriority.Default);        }        /// <summary>                 /// 插入緩存.                 /// </summary>                 /// <param name="key">key</param>                 /// <param name="value">value</param>                 /// <param name="cacheDurationInSeconds">過(guò)期時(shí)間單位秒</param>                 /// <param name="priority">緩存項(xiàng)屬性</param>                 public void Add(string key, V value, int cacheDurationInSeconds, CacheItemPriority priority)        {            string keyString = CreateKey(key);            HttpRuntime.Cache.Insert(keyString, value, null, DateTime.Now.AddSeconds(cacheDurationInSeconds), Cache.NoSlidingExpiration, priority, null);        }        /// <summary>                 /// 插入緩存.                 /// </summary>                 /// <param name="key">key</param>                 /// <param name="value">value</param>                 /// <param name="cacheDurationInSeconds">過(guò)期時(shí)間單位秒</param>                 /// <param name="priority">緩存項(xiàng)屬性</param>                 public  void Add(string key, V value, int cacheDurationInSeconds, CacheDependency dependency, CacheItemPriority priority)        {            string keyString = CreateKey(key);            HttpRuntime.Cache.Insert(keyString, value, dependency, DateTime.Now.AddSeconds(cacheDurationInSeconds), Cache.NoSlidingExpiration, priority, null);        }        /// <summary>                 /// 刪除緩存                 /// </summary>                 /// <param name="key">key</param>                 public override void Remove(string key)        {            HttpRuntime.Cache.Remove(CreateKey(key));        }        /// <summary>        /// 清除所有緩存        /// </summary>        public override void RemoveAll()        {            System.Web.Caching.Cache cache = HttpRuntime.Cache;            IDictionaryEnumerator CacheEnum = cache.GetEnumerator();            ArrayList al = new ArrayList();            while (CacheEnum.MoveNext())            {                al.Add(CacheEnum.Key);            }            foreach (string key in al)            {                cache.Remove(key);            }        }        /// <summary>        /// 清除所有包含關(guān)鍵字的緩存        /// </summary>        /// <param name="removeKey">關(guān)鍵字</param>        public override void RemoveAll(Func<string, bool> removeExpression)        {            System.Web.Caching.Cache _cache = HttpRuntime.Cache;            var allKeyList = GetAllKey();            var delKeyList = allKeyList.Where(removeExpression).ToList();            foreach (var key in delKeyList)            {                Remove(key);            }        }        /// <summary>        /// 獲取所有緩存key        /// </summary>        /// <returns></returns>        public override IEnumerable<string> GetAllKey()        {            IDictionaryEnumerator CacheEnum = HttpRuntime.Cache.GetEnumerator();            while (CacheEnum.MoveNext())            {                yield return CacheEnum.Key.ToString();            }        }        #endregion        #region 私有函數(shù)        /// <summary>                 ///創(chuàng)建KEY           /// </summary>                 /// <param name="key">Key</param>                 /// <returns></returns>                 private string CreateKey(string key)        {            return "http_cache_"+key.ToString();        }        #endregion    }}

  

using System;namespace SyntacticSugar{    public abstract class IHttpStorageObject<V>    {        public int Minutes = 60;        public int Hour = 60 * 60;        public int Day = 60 * 60 * 24;        public System.Web.HttpContext context = System.Web.HttpContext.Current;        public abstract void Add(string key, V value);        public abstract bool ContainsKey(string key);        public abstract V Get(string key);        public abstract global::System.Collections.Generic.IEnumerable<string> GetAllKey();        public abstract void Remove(string key);        public abstract void RemoveAll();        public abstract void RemoveAll(Func<string, bool> removeExpression);        public abstract V this[string key] { get; }    }}

  


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 郴州市| 加查县| 富民县| 徐闻县| 文山县| 富宁县| 浏阳市| 长宁县| 安康市| 昌吉市| 红河县| 临朐县| 日照市| 嘉善县| 垣曲县| 洛隆县| 霍城县| 岳池县| 丹凤县| 庐江县| 朔州市| 日喀则市| 铁岭市| 兴义市| 溧水县| 新宁县| 南靖县| 荣昌县| 天等县| 龙山县| 湾仔区| 亳州市| 大理市| 浮山县| 隆子县| 宿迁市| 通化市| 青龙| 株洲市| 博野县| 红桥区|