§ ITPOW >> 文档 >> C#

.NET 的 Cache 类-Add 方法

作者:vkvi 来源:ITPOW(原创) 日期:2021-11-28

cache.Add 参数一共有 7 个,我们先说下第 3 和第 7 个参数

第 3 个参数表示什么缓存依赖,比如微软与自家的 SQL Server 搭配得很好,它有一个 SqlCacheDependency,当我们使用它时,数据库表有变化时,缓存自动清空,示例:SqlCacheDependency Class (System.Web.Caching) | Microsoft Docs我们不需要时,可设置 null。

第 7 个参数表示当前缓存被清除时的回调函数

我们再说第 4、5 参数

第 4 个参数表示绝对的过期时间absoluteExpiration DateTime

第 5 个参数表示最后一次读取缓存多久后过期slidingExpiration TimeSpan。比如:TimeSpan.FromMinutes(20)。

这 2 个参数不能同时设置有效值:

  • 如果使用了 absoluteExpiration,将 slidingExpiration 设置为:Cache.NoSlidingExpiration

  • 如果使用了 slidingExpiration,应将 absoluteExpiration 设置为:Cache.NoAbsoluteExpiration

否则报错:absoluteExpiration 必须为 DateTime.MaxValue 或 slidingExpiration 必须为 timeSpan.Zero。说实话,我是觉得这报错提示太误导人了。

第 6 个参数

第 6 个参数 priority 表示优先级,优先级有什么用呢?当 IIS 认为有必要清理缓存时(哪怕缓存时间没到),它最先清理那些低优先级的。

通常设置为 CacheItemPriority.Normal 即可。

应用示例

cache.Add("addkey", DateTime.Now, null,
	DateTime.Now.AddMinutes(2), Cache.NoSlidingExpiration,
	CacheItemPriority.Normal, null);
cache.Add("addkey", "itpow", null,
	DateTime.Now.AddMinutes(2), Cache.NoSlidingExpiration,
	CacheItemPriority.Normal, null);

看明白了几个参数,用起来倒是挺简单的。

网上有人说 Add 遇到重名的 key 会出错,Insert 则不出错。这种说法是错误的。正确的是:Add、Insert 遇到重名的 key 时,都不会出错,如上代码就不会出错。

相关文章