您的位置:新葡亰496net > 奥门新萄京娱乐场 > 新葡亰496netMemoryCache缓存的用法学习,Cache之数据

新葡亰496netMemoryCache缓存的用法学习,Cache之数据

发布时间:2019-06-19 12:38编辑:奥门新萄京娱乐场浏览(120)

          在完结了DNS解析模块然后,我发掘到了DNS缓存机制也很有必不可缺。在Redis,Memcache,和.Net自带的Cache之间,思索到布署难点,最后摘取了后者,在此以前在攻读Web及开支的长河中用过System.Web.Caching.Cache.aspx)那些类库,可是此番的爬虫程序作者筹算布署为桌面软件,所以选取了System.Runtime.Caching.MemoryCache(中期如有要求也会进入System.Web.Caching.Cache来适配Web端程序)。

          MemoryCache的使用网络介绍的没多少,可是这么些是.NET4.0新引进的缓存对象,估量首假若替换原本公司库的缓存模块,使得.NET的缓存能够无处不在,而不用基于特定的Windows版本上利用。

          出于方便考虑,我们将不再实例化新的MemoryCache对象,只对MemoryCache的默许示例Memory.Default举行增加和删除查操作。

    基础篇

    增加:

    新葡亰496net 1

    扩张缓存必要提供七个参数,CacheItem类表示缓存中的单个缓存项,

    构造函数:
    CacheItem(String, Object, String)新葡亰496netMemoryCache缓存的用法学习,Cache之数据缓存。            用缓存项的钦命键、值和区域初步化新的 CacheItem 实例。

    多个参数分别为:键、值和区域。

    CacheItemPolicy类则表示缓存项的过期消息,只含有暗许的构造函数。

    日增一条缓存:

    var item = new CacheItem("习大大", "两学一做");
    var policy = new CacheItemPolicy();
    policy.SlidingExpiration = new TimeSpan(500);
    //插入一条key为"习大大",value为"两学一做",500毫秒后自动销毁的缓存
    MemoryCache.Default.Add(item, policy);
    //重新设置policy的过期时间为当前时间 十分钟
    policy.AbsoluteExpiration = DateTimeOffset.Now   TimeSpan.FromMinutes(10);
    //注意,如果要使用Sliding时间,则Absolute必须为DateTimeOffset.MaxValue,反之,则Sliding必须为TimeSpan.Zero
    policy.SlidingExpiration = TimeSpan.Zero;
    //重新插入,覆盖前一条数据
    MemoryCache.Default.Add(item, policy);
    
    注意,如果要使用Sliding时间,则Absolute必须为DateTimeOffset.MaxValue,反之,则Sliding必须为TimeSpan.Zero 
    

    查询:

    缓存对象类似于字典集,查询能够从来选择memoryCache[key]来拓展,比如大家查询一下眼下插入的那条数据:

    var idea = MemoryCache.Default["习大大"];
    

    移除:

    新葡亰496net 2

    参数

    key:要移除的缓存项的唯一标志符。

    regionName:缓存中的贰个增加了缓存项的命名区域。不要为该参数字传送递值。暗中同意景况下,此参数为null,因为 MemoryCache 类未落到实处区域。

    返回值
    Type: System.Object  假诺在缓存中找到该项,则为已移除的缓存项;不然为 null。

    删除前边参加的那一项:

    MemoryCache.Default.Remove("习大大");
    

    进阶篇

    略知一二了着力的用法之后,大家就能够对它做更加的包裹,使之使用起来更为方便:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.Caching;
    


    namespace Crawler.Common { ///

    /// 基于MemoryCache的缓存辅助类 /// public static class MemoryCacheHelper { private static readonly object _locker = new object();
    public static bool Contains(string key) { return MemoryCache.Default.Contains(key); }

    /// /// 获取Catch元素 /// /// 所获取的元素的类型新葡亰496net, /// 元素的键 /// 特定的元素值 public static T Get(string key) { if (string.IsNullOr惠特eSpace(key)) throw new ArgumentException("不合规的key!"); if (!MemoryCache.Default.Contains(key)) throw new ArgumentException("获取战败,不存在该key!"); if (!(MemoryCache.Default[key] is T)) throw new ArgumentException("未找到所需项目数据!"); return (T)MemoryCache.Default[key]; }
    /// /// 添加Catch元素 /// /// 元素的键 /// 元素的值 /// 元素过期时间(时间间隔) /// 元素过期时间(绝对时间) /// public static bool Add(string key, object value, TimeSpan? slidingExpiration = null, DateTime? absoluteExpiration = null) { var item = new CacheItem(key, value); var policy = CreatePolicy(slidingExpiration, absoluteExpiration); lock (_locker) return MemoryCache.Default.Add(item, policy); }
    /// /// 移出Cache元素 /// /// 待移出元素的类型 /// 待移除元素的键 /// 已经移出的元素 public static T Remove(string key) { if (string.IsNullOr惠特eSpace(key)) throw new ArgumentException("违规的key!"); if (!MemoryCache.Default.Contains(key)) throw new ArgumentException("获取战败,不存在该key!"); var value = MemoryCache.Default.Get(key); if (!(value is T)) throw new ArgumentException("未找到所需项目数据!"); return (T)MemoryCache.Default.Remove(key); }
    /// /// 移出多条缓存数据,默认为所有缓存 /// /// 待移出的缓存类型 /// /// public static List RemoveAll(IEnumerable keyList = null) { if (keyList != null) return (from key in keyList where MemoryCache.Default.Contains(key) where MemoryCache.Default.Get(key) is T select (T)MemoryCache.Default.Remove(key)).ToList(); while (MemoryCache.Default.GetCount() > 0) MemoryCache.Default.Remove(MemoryCache.Default.ElementAt(0).Key); return new List(); }
    /// /// 设置过期信息 /// /// /// /// private static CacheItemPolicy CreatePolicy(TimeSpan? slidingExpiration, DateTime? absoluteExpiration) { var policy = new CacheItemPolicy();
    if (absoluteExpiration.HasValue) { policy.AbsoluteExpiration = absoluteExpiration.Value; } else if (slidingExpiration.HasValue) { policy.SlidingExpiration = slidingExpiration.Value; }
    policy.Priority = CacheItemPriority.Default;
    return policy; } } }

    添加 Cache[Key]=object  or Cache.Insert

     

    添加 Cache[Key]=object or Cache.Insert

    移除 Cache.Remove(key)

    /// <summary>
        /// 缓存管理器接口类
        /// </summary>
        public interface ICacheManager
        {
            /// <summary>
            /// 以目的的款型得到缓存中的内定缓存项。
            /// </summary>
            /// <typeparam name="T">Type</typeparam>
            /// <param name="key"> 要收获的缓存项的独一无二标志符。</param>
            /// <returns> 由 key 标记的缓存项.</returns>
            T Get<T>(string key);

    移除 Cache.Remove

    1、将值直接写入Cache

            /// <summary>
            /// 向缓存中插入缓存项,同不时间钦命基于时间的过期详细消息。
            /// </summary>
            /// <param name="key">该缓存项的无与伦比标记符。</param>
            /// <param name="data">要插入的对象。</param>
            /// <param name="cacheTime">缓存项的定势的超时日期和岁月。</param>
            void Set(string key, object data, int cacheTime);

    1、将值直接写入Cache

     代码如下

            /// <summary>
            ///   检查缓存中是还是不是已存在该缓存项。
            /// </summary>
            /// <param name="key">该缓存项的有一无二标志符。</param>
            /// <returns> 即使缓存中带有具备与 key 一样的键值的缓存项,则为 true;不然为 false。</returns>
            bool IsSet(string key);

    代码如下

    复制代码

            /// <summary>
            /// 从缓存中移除缓存项。
            /// </summary>
            /// <param name="key">/该缓存项的举世无双标志符。</param>
            void Remove(string key);

    复制代码

    HttpContext.Current.Cache["One"] = "1";

            /// <summary>
            /// 通过正则表明式清除缓存
            /// </summary>
            /// <param name="pattern">pattern</param>
            void RemoveByPattern(string pattern);

    HttpContext.Current.Cache["One"] = "1";

    利用'相对逾期'情势管理缓存,过期光阴为:9999年一月二二十三日(不推荐使用该方法管理缓存,并且应在适宜的时候清空缓存Key)

            /// <summary>
            /// 清除缓存
            /// </summary>
            void Clear();
        }

    利用'相对逾期'情势管理缓存,过期岁月为:9999年三月七日(不推荐使用该方法管理缓存,并且应在适当的时候清空缓存Key)

    2、使用Insert(String, Object)插入Cache

     

    2、使用Insert(String, Object)插入Cache

     代码如下

    /// <summary>
        /// 全局数据缓存MemoryCacheManager类,使用.net  缓存框架达成数量缓存
        /// </summary>
        public partial class MemoryCacheManager : ICacheManager
        {
            /// <summary>
            ///   表示一个指标缓存并提供用于访问该对象缓存的基方法和性质。
            /// </summary>
            protected ObjectCache Cache
            {
                get
                {
                    return MemoryCache.Default;
                }
            }
           
            /// <summary>
            /// 在派生类中重写时,以指标的款型获得缓存中的钦赐缓存项。
            /// </summary>
            /// <typeparam name="T">Type</typeparam>
            /// <param name="key"> 要博取的缓存项的唯一标志符。</param>
            /// <returns> 由 key 标记的缓存项.</returns>
            public T Get<T>(string key)
            {
                return (T)Cache[key];
            }

    代码如下

    复制代码

            /// <summary>
    新葡亰496netMemoryCache缓存的用法学习,Cache之数据缓存。        /// 在派生类中重写时,向缓存中插入缓存项,同临时候钦定基于时间的逾期详细音讯。
            /// </summary>
            /// <param name="key">该缓存项的无可比拟标记符。</param>
            /// <param name="data">要插入的对象。</param>
            /// <param name="cacheTime">缓存项的一定的晚点日期和岁月。</param>
            public void Set(string key, object data, int cacheTime)
            {
                if (data == null)
                    return;

    复制代码

    string cacheKey = "Two";
    object cacheValue = HttpContext.Current.Cache.Get(cacheKey);

                //  定义一个包括该缓存项的逐出详细音讯的对象。此指标提供比不难相对过期越多的逐出选项。
                var policy = new CacheItemPolicy();
                policy.AbsoluteExpiration = DateTime.Now TimeSpan.FromMinutes(cacheTime);
                Cache.Add(new CacheItem(key, data), policy);
            }

    string cacheKey = "Two";
    object cacheValue = HttpContext.Current.Cache.Get;

    if(cacheValue == null)
    {
        cacheValue = WebConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;

            /// <summary>
            ///   在派生类中重写时,检查缓存中是不是已存在该缓存项。
            /// </summary>
            /// <param name="key">该缓存项的不今不古标志符。</param>
            /// <returns> 假设缓存中带有具备与 key 同样的键值的缓存项,则为 true;否则为 false。</returns>
            public bool IsSet(string key)
            {
                return (Cache.Contains(key));
            }

    if(cacheValue == null)
    {
    cacheValue = WebConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;

        HttpContext.Current.Cache.Insert(cacheKey, cacheValue);
    }

            /// <summary>
            ///  在派生类中重写时,从缓存中移除缓存项。
            /// </summary>
            /// <param name="key">/该缓存项的有一无二标志符。</param>
            public void Remove(string key)
            {
                Cache.Remove(key);
            }

    HttpContext.Current.Cache.Insert(cacheKey, cacheValue);
    }

    //显示钦命缓存的Key 与 Value
    this.ShowMessage(cacheKey, cacheValue.ToString());

            /// <summary>
            /// 通过正则相配从缓存中移除缓存项。
            /// </summary>
            /// <param name="pattern">正则表明式</param>
            public void RemoveByPattern(string pattern)
            {
                var regex = new Regex(pattern, RegexOptions.Singleline | RegexOptions.Compiled | RegexOptions.IgnoreCase);
                var keysToRemove = new List<String>();

    //展现钦命缓存的Key 与 Value
    this.ShowMessage(cacheKey, cacheValue.ToString;

    3、使用Insert(String, Object, CacheDependency, DateTime, TimeSpan)插入Cache

                foreach (var item in Cache)
                    if (regex.IsMatch(item.Key))
                        keysToRemove.Add(item.Key);

    3、使用Insert(String, Object, CacheDependency, DateTime, TimeSpan)插入Cache

     代码如下

                foreach (string key in keysToRemove)
                {
                    Remove(key);
                }
            }

    代码如下

    复制代码

            /// <summary>
            ///清除缓存
            /// </summary>
            public void Clear()
            {
                foreach (var item in Cache)
                    Remove(item.Key);
            }
        }

    复制代码

    string cacheKey = "__cache__students";

     

    string cacheKey = "__cache__students";

    DataSet dataSet = this.Cache.Get(cacheKey) as DataSet;

    /// <summary>
        ///缓存扩充类
        /// </summary>
        public static class CacheExtensions
        {
            /// <summary>
            /// 向缓存中插入缓存项或获得缓存中的钦命缓存项
            /// </summary>
            /// <typeparam name="T">类型</typeparam>
            /// <param name="cacheManager">使用的缓存管理器</param>
            /// <param name="key">该缓存项的独占鳌头标志符</param>
            /// <param name="acquire">委托项目</param>
            /// <returns></returns>
            public static T Get<T>(this ICacheManager cacheManager, string key, Func<T> acquire)
            {
                return Get(cacheManager, key, 60, acquire);
            }
            /// <summary>
            /// 向缓存中插入缓存项或获得缓存中的钦定缓存项
            /// </summary>
            /// <typeparam name="T">类型</typeparam>
            /// <param name="cacheManager">使用的缓存管理器</param>
            /// <param name="key">该缓存项的唯一标志符</param>
            /// <param name="cache提姆e">缓存项的固化的过期日期和时间</param>
            /// <param name="acquire">委托项目</param>
            /// <returns></returns>
            public static T Get<T>(this ICacheManager cacheManager, string key, int cacheTime, Func<T> acquire)
            {
                if (cacheManager.IsSet(key))
                {
                    // 以指标的款式获得缓存中的钦命缓存项。
                    return cacheManager.Get<T>(key);
                }
                else
                {
                    var result = acquire();
                         //向缓存中插入缓存项,同时钦点基于时间的过期详细新闻。
                        cacheManager.Set(key, result, cacheTime);
                    return result;
                }
            }
        }

    DataSet dataSet = this.Cache.Get as DataSet;

    if(dataSet == null)
    {
        dataSet = new DataSet();

     

    if(dataSet == null)
    {
    dataSet = new DataSet();

        //加载XML并填充至DataSet
        dataSet.ReadXml(this.Server.MapPath(@"XMLFile.xml"));

     

    //加载XML并填充至DataSet
    dataSet.ReadXml(this.Server.MapPath(@"XMLFile.xml"));

        //到场缓存,并设定'相对过期时间'为5分钟
        this.Cache.Insert(cacheKey, dataSet, null, DateTime.Now.AddMinutes(5), System.Web.Caching.Cache.NoSlidingExpiration);
    }

     

    //参预缓存,并设定'相对过期时间'为5分钟
    this.Cache.Insert(cacheKey, dataSet, null, DateTime.Now.AddMinutes, System.Web.Caching.Cache.NoSlidingExpiration);
    }

    //绑定DataGrid数据
    grdDefault.DataSource = dataSet;
    grdDefault.DataBind();

     

    //绑定DataGrid数据
    grdDefault.DataSource = dataSet;
    grdDefault.DataBind();

    该方法较首要的三个参数为absoluteExpiration及slidingExpiration
    absoluteExpiration  DateTime类型,代表相对过期时间
    slidingExpiration  TimeSpan类型,代表滑动过期时间
    absoluteExpiration与slidingExpiration无法同时使用
    比如:设定了absoluteExpiration参数时,slidingExpiration必须设定为System.Web.Caching.Cache.NoSlidingExpiration
    反之:设定了slidingExpiration参数时, absoluteExpiration必须设定为System.Web.Caching.Cache.NoAbsoluteExpiration

     

    该格局较主要的七个参数为absoluteExpiration及slidingExpiration
    absoluteExpiration DateTime类型,代表相对过期时间
    slidingExpiration TimeSpan类型,代表滑动过期时间
    absoluteExpiration与slidingExpiration不可能而且选拔
    诸如:设定了absoluteExpiration参数时,slidingExpiration必须设定为System.Web.Caching.Cache.NoSlidingExpiration
    反之:设定了slidingExpiration参数时,

     4、使用Insert(String, Object, CacheDependency, DateTime, TimeSpan, CacheItemPriority,

     

    4、使用Insert(String, Object, CacheDependency, DateTime, TimeSpan, CacheItemPriority,

     代码如下

    代码如下

    复制代码

    复制代码

    CacheItemRemovedCallback)插入Cache

    CacheItemRemovedCallback)插入Cache

    public partial class PriorityAndCallbackDemo : System.Web.UI.Page
    {
        #region 静态字段
        static bool CacheItemRemoved = false;
        static CacheItemRemovedReason Reason;
        static string CacheItemKey = "fw__cache__students";
        #endregion

    public partial class PriorityAndCallbackDemo : System.Web.UI.Page
    {
    #region 静态字段
    static bool CacheItemRemoved = false;
    static CacheItemRemovedReason Reason;
    static string CacheItemKey = "fw__cache__students";
    #endregion

        #region 事件管理
        //页面加载
        protected void Page_Load(object sender, EventArgs e)
        {
            //缓存项已移除
            if(PriorityAndCallbackDemo.CacheItemRemoved)
            {
                ltMessage.Text = string.Format("Key={0}已从缓存移出,原因为:{1}", PriorityAndCallback德姆o.CacheItemKey, PriorityAndCallback德姆o.Reason.ToString());
            }
        }

    #region 事件处理
    //页面加载
    protected void Page_Load(object sender, EventArgs e)
    {
    //缓存项已移除
    if(PriorityAndCallbackDemo.CacheItemRemoved)
    {
    ltMessage.Text = string.Format("Key={0}已从缓存移出,原因为:{1}", PriorityAndCallbackDemo.CacheItemKey, PriorityAndCallback德姆o.Reason.ToString;
    }
    }

        //'增加缓存'开关 点击事件 管理
        protected void btnAddCache_Click(object sender, EventArgs e)
        {
            DataSet dataSet = this.Cache.Get(PriorityAndCallbackDemo.CacheItemKey) as DataSet;

    //'增加缓存'开关 点击事件 管理
    protected void btnAddCache_Click(object sender, EventArgs e)
    {
    DataSet dataSet = this.Cache.Get(PriorityAndCallbackDemo.CacheItemKey) as DataSet;

            if(dataSet == null)
            {
                dataSet = new DataSet();
                dataSet.ReadXml(this.Server.MapPath(@"XMLFile.xml"));

    if(dataSet == null)
    {
    dataSet = new DataSet();
    dataSet.ReadXml(this.Server.MapPath(@"XMLFile.xml"));

                //使用 Web.config 作为缓存过期注重项
                CacheDependency dependency = new CacheDependency(this.Server.MapPath(@"Web.config"), DateTime.Now);

    //使用 Web.config 作为缓存过期依赖项
    CacheDependency dependency = new CacheDependency(this.Server.MapPath(@"Web.config"), DateTime.Now);

                //插足缓存,设定优先级为暗中同意等级
                this.Cache.Insert(PriorityAndCallbackDemo.CacheItemKey, dataSet, dependency, DateTime.Now.AddMinutes(1), System.Web.Caching.Cache.NoSlidingExpiration, CacheItemPriority.Default, new CacheItemRemovedCallback(this.CacheItemRemovedHandler));
            }

    //参加缓存,设定优先级为暗中认可品级
    this.Cache.Insert(PriorityAndCallbackDemo.CacheItemKey, dataSet, dependency, DateTime.Now.AddMinutes, System.Web.Caching.Cache.NoSlidingExpiration, CacheItemPriority.Default, new CacheItemRemovedCallback(this.CacheItemRemovedHandler));
    }

            //绑定GridView数据
            grdDefault.DataSource = dataSet;
            grdDefault.DataBind();
        }

    //绑定GridView数据
    grdDefault.DataSource = dataSet;
    grdDefault.DataBind();
    }

        //'移除缓存'按键 点击事件 管理
        protected void btnRemoveCache_Click(object sender, EventArgs e)
        {
            if(this.Cache[PriorityAndCallbackDemo.CacheItemKey] != null)
            {
                this.Cache.Remove(PriorityAndCallbackDemo.CacheItemKey);
            }
        }
        #endregion

    //'移除缓存'按键 点击事件 管理
    protected void btnRemoveCache_Click(object sender, EventArgs e)
    {
    if(this.Cache[PriorityAndCallbackDemo.CacheItemKey] != null)
    {
    this.Cache.Remove(PriorityAndCallbackDemo.CacheItemKey);
    }
    }
    #endregion

        #region 私有一点子
        //缓存项移除事件管理
        private void CacheItemRemovedHandler(string key, object value, CacheItemRemovedReason relason)
        {
            PriorityAndCallbackDemo.CacheItemRemoved = true;
            PriorityAndCallbackDemo.Reason = relason;
        }
        #endregion
    }

    #region 私有艺术
    //缓存项移除事件管理
    private void CacheItemRemovedHandler(string key, object value, CacheItemRemovedReason relason)
    {
    PriorityAndCallbackDemo.CacheItemRemoved = true;
    PriorityAndCallbackDemo.Reason = relason;
    }
    #endregion
    }

    该办法较主要的三个参数为CacheItemPriority及CacheItemRemovedCallback
    CacheItemPriority  缓存项优先级,当服务器内存远远不够时,优先级越高的项越不轻易被移除
    CacheItemRemovedCallback  该参数为委托项目,当缓存项被移除时所调用,蕴含Reason参数用于表示缓存项被移除的缘由

    该办法较首要的八个参数为CacheItemPriority及CacheItemRemovedCallback
    CacheItemPriority 缓存项优先级,当服务器内部存款和储蓄器缺乏时,优先级越高的项越不轻松被移除
    CacheItemRemovedCallback 该参数为委托项目,当缓存项被移除时所调用,包罗Reason参数用于表示缓存项被移除的因由

    【作者是怎么用的】

    首先知道缓存战略。可调过期计谋 和 相对逾期计策。注意,两则不可能而且选用

    率先知道缓存战术。可调过期战略 和 相对过期战略。注意,两则不可能而且选择  

    行使可调过期战术,需求将absoluteExpiration=DateTime.马克斯Value ,TimeSpan .FromMinutes设置项目惟有在10分钟内不被应用才会被移除

    利用可调过期战略,须求将absoluteExpiration=DateTime.马克斯Value ,TimeSpan .FromMinutes(10)设置项目唯有在10分钟内不被使用才会被移除

    代码如下

     代码如下

    复制代码

    复制代码

    Cache.Insert("data", "123", null , DateTime.MaxValue, TimeSpan.FromMinutes;

    Cache.Insert("data", "123", null , DateTime.MaxValue, TimeSpan.FromMinutes(10));

    相对攻略,如天气报告,将音讯保存60分钟

    纯属战略,如天气报告,将消息保存60分钟

    代码如下

     代码如下

    复制代码

    复制代码

    Cache.Insert("data", "123", null , DateTime.Now.AddMinutes, TimeSpan.Zero);

    Cache.Insert("data", "123", null , DateTime.Now.AddMinutes(60), TimeSpan.Zero);

    缓存重视。

    缓存注重。

    即一个缓存的失灵注重别的贰个object。这里的object能够指其余三个缓存,或然二个文书,可能....

    即叁个缓存的失效依赖别的二个object。这里的object能够指其它多个缓存,大概贰个文件,或然....

    类:CacheDependency 命名空间 System.Web.Caching.CacheDependency依赖于别的缓存项目

    类:CacheDependency 命名空间 System.Web.Caching.CacheDependency信赖于别的缓存项目

    代码如下

     代码如下

    复制代码

    复制代码

    System.Web.Caching.CacheDependency cacheDependency = new System.Web.Caching.CacheDependency (null, new string [] { "time" });
    Cache.Insert( "number", num, cacheDependency);

    System.Web.Caching.CacheDependency cacheDependency = new System.Web.Caching.CacheDependency (null, new string [] { "time" });
    Cache.Insert( "number", num, cacheDependency);
     
    依傍于文件或文件夹
     
    System.Web.Caching. CacheDependency cacheDependency = new System.Web.Caching.CacheDependency ( "test.xml");
    当test.xml文件删除、更新时自动从缓存中移除
     
    System.Web.Caching.CacheDependency cacheDependency = new System.Web.Caching.CacheDependency(null, new string[] { "time" });
    Cache.Insert("test", "123", cacheDependency);

    依赖于文件或文件夹

     
    移除项目回调
     Cache.Insert("test", "123", null , DateTime.Now.AddSeconds(10), TimeSpan.Zero, new CacheItemUpdateCallback(Test));
     
     
     private void Test(string key, CacheItemUpdateReason reason, out object expensiveObject, out CacheDependency dependency, out DateTime absoluteExpiration, out TimeSpan slidingExpiration)
        {
     
        }  

    System.Web.Caching. CacheDependency cacheDependency = new System.Web.Caching.CacheDependency ( "test.xml");
    当test.xml文件删除、更新时自动从缓存中移除

    System.Web.Caching.CacheDependency cacheDependency = new System.Web.Caching.CacheDependency(null, new string[] { "time" });
    Cache.Insert("test", "123", cacheDependency);

    移除项目回调
    Cache.Insert("test", "123", null , DateTime.Now.AddSeconds, TimeSpan.Zero, new CacheItemUpdateCallback;

    private void Test(string key, CacheItemUpdateReason reason, out object expensiveObject, out CacheDependency dependency, out DateTime absoluteExpiration, out TimeSpan slidingExpiration)
    {

    }

    本文由新葡亰496net发布于奥门新萄京娱乐场,转载请注明出处:新葡亰496netMemoryCache缓存的用法学习,Cache之数据

    关键词: