威尼斯人线上娱乐

【威尼斯人线上娱乐】MemoryCache缓存的用历史学习,爬虫学习笔记

19 4月 , 2019  

     
在达成了DNS解析模块然后,笔者意识到了DNS缓存机制也很有必不可缺。在Redis,Memcache,和.Net自带的Cache之间,思虑到安排难点,最后选项了后世,在此之前在就学Web及成本的进程中用过System.Web.Caching.Cache.aspx)这几个类库,不过此次的爬虫程序作者打算安排为桌面软件,所以选拔了System.Runtime.Caching.MemoryCache(前期如有要求也会投入System.Web.Caching.Cache来适配Web端程序)。

     
MemoryCache的应用网上介绍的不多,可是那些是.NET肆.0新引进的缓存对象,推断首如果替换原来公司库的缓存模块,使得.NET的缓存能够无处不在,而不用基于特定的Windows版本上选拔。

     
出于方便思索,大家将不再实例化新的MemoryCache对象,只对MemoryCache的暗中同意示例Memory.Default举行增加和删除查操作。

基础篇

增加:

威尼斯人线上娱乐 1

追加缓存要求提供七个参数,CacheItem类表示缓存中的单个缓存项,

构造函数:
CacheItem(String, Object,
String)           
用缓存项的钦点键、值和区域开始化新的 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["习大大"];

移除:

威尼斯人线上娱乐 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元素
///

/// 所获取的元素的类型
/// 元素的键 /// 特定的元素值
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.IsNullOrWhiteSpace(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【威尼斯人线上娱乐】MemoryCache缓存的用历史学习,爬虫学习笔记。 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;
}
}
}

     
在做到了DNS解析模块然后,笔者发觉到了DNS缓存机制也很有不可缺少。在Redis,Memcache,和.Net自带的Cache之间,思索到安排难点,最终选拔了后世,在此之前在就学Web及支出的长河中用过System.Web.Caching.Cache.aspx)这几个类库,但是此次的爬虫程序小编打算安顿为桌面软件,所以选用了System.Runtime.Caching.MemoryCache(中期如有要求也会投入System.Web.Caching.Cache来适配Web端程序)。

     
MemoryCache的选拔网上介绍的不多,然则那个是.NET四.0新引进的缓存对象,臆想首借使替换原来公司库的缓存模块,使得.NET的缓存可以无处不在,而不用基于特定的Windows版本上应用。

     
出于方便思量,大家将不再实例化新的MemoryCache对象,只对MemoryCache的默许示例Memory.Default举办增加和删除查操作。

基础篇

增加:

威尼斯人线上娱乐 3

追加缓存需求提供多个参数,CacheItem类表示缓存中的单个缓存项,

构造函数:
CacheItem(String, Object,
String)           
用缓存项的内定键、值和区域开端化新的 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["习大大"];

移除:

威尼斯人线上娱乐 4

参数

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元素
///

/// 所获取的元素的类型
/// 元素的键 /// 特定的元素值
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)

移除 Cache.Remove

一、将值间接写入Cache

1、将值直接写入Cache

 代码如下

代码如下

复制代码

复制代码

HttpContext.Current.Cache[“One”] = “1”;

HttpContext.Current.Cache[“One”] = “1”;

利用’相对过期’格局处理缓存,过期时刻为:999玖年十月二11日(不推荐使用该方法处理缓存,并且应在适当的时候清空缓存Key)

应用’相对逾期’情势处理缓存,过期日子为:999玖年11月25日(不引入应用该方式处理缓存,并且应在适龄的时候清空缓存Key)

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

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

 代码如下

代码如下

复制代码

复制代码

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

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

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

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

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

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

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

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

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

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

 代码如下

代码如下

复制代码

复制代码

string cacheKey = “__cache__students”;

string cacheKey = “__cache__students”;

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

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”));

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

//参加缓存,并设定’相对过期时间’为四分钟
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,
PriorityAndCallbackDemo.Reason.ToString());
        }
    }

#region 事件处理
//页面加载
protected void Page_Load(object sender, EventArgs e)
{
//缓存项已移除
if(PriorityAndCallbackDemo.CacheItemRemoved)
{
ltMessage.Text = string.Format(“Key={0}已从缓存移出,原因为:{一}”,
PriorityAndCallback德姆o.CacheItemKey,
PriorityAndCallbackDemo.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参数用于表示缓存项被移除的原由

【作者是怎么用的】

率先知道缓存计谋。可调过期攻略 和 相对过期攻略。注意,两则不能够同时选用

第3知道缓存计谋。可调过期计策 和 相对逾期计谋。注意,两则无法而且使用
 

选取可调过期计策,要求将absoluteExpiration=DateTime.马克斯Value ,TimeSpan
.FromMinutes设置项目只有在10分钟内不被选取才会被移除

行使可调过期战术,供给将absoluteExpiration=DateTime.马克斯Value ,TimeSpan
.FromMinutes(十)设置项目唯有在拾分钟内不被采纳才会被移除

代码如下

 代码如下

复制代码

复制代码

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

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

纯属计谋,如天气报告,将新闻保存伍20分钟

纯属攻略,如天气报告,将音讯保存60秒钟

代码如下

 代码如下

复制代码

复制代码

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

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

缓存正视。

缓存信赖。

即2个缓存的失效依赖其余叁个object。那里的object能够指别的3个缓存,恐怕1个文书,恐怕….

即三个缓存的失效依赖其余贰个object。那里的object能够指别的三个缓存,或然2个文书,只怕….

类: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)
{

}


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图