ASP.NET 缓存添加与插入

Posted

技术标签:

【中文标题】ASP.NET 缓存添加与插入【英文标题】:ASP.NET cache add vs insert 【发布时间】:2011-09-23 01:11:09 【问题描述】:

Cache.Add()Cache.Insert() 方法有什么区别?

我应该在哪些情况下使用它们?

【问题讨论】:

【参考方案1】:

Insert 将使用相同的 Key 覆盖现有的缓存值;如果存在具有相同键的现有缓存值,Add 将失败(不执行任何操作)。所以有一种情况说你应该总是使用 Insert 因为代码第一次运行它会将你的对象放入缓存中,当它随后运行时它会更新缓存的值。

【讨论】:

你觉得 Add 方法完全没用吗? @guchko-gleb 如果您对缓存的使用不应该在代码中的给定步骤遇到现有缓存值 - 那么来自添加的异常将是受欢迎的。 旁注:根据MSDN,如果项目已经存在,添加不会引发异常【参考方案2】:

Cache.Add() 在添加后还会从Cache 返回一个缓存对象:

string cachedItem = Cache.Add("cachedItem", ....);

【讨论】:

添加返回缓存中的现有值:如果您要添加新项目,则返回null。如果您尝试覆盖现有值,则不会发生任何事情并返回缓存中的值。【参考方案3】:

您可以使用Cache.Add()Cache.Insert() 方法来缓存您的数据。两者之间的唯一区别是,Cache.Add() 方法返回要缓存的对象。 因此,假设您要使用该对象并将其缓存。在Cache.Add() 的帮助下,您可以在一行代码中完成。

Cache.Insert() 方法有 4 种不同类型的重载方法,而 Cache.Add() 只有一种。

【讨论】:

今天浪费了很多时间,因为 Cache.Add 不会覆盖缓存中已经存在的值,也不会抛出异常。 @steve 有一个非常重要的观点。来自MSDN(强调我的):...如果您使用Add 方法并且缓存中已经存在同名的项目,则该方法不会替换该项目并且不会引发异常。 添加返回缓存中的现有值:如果您要添加新项目,则返回null。如果您尝试覆盖现有值,则不会发生任何事情并返回缓存中的值。

以上是关于ASP.NET 缓存添加与插入的主要内容,如果未能解决你的问题,请参考以下文章

Asp.net - 用于存储字典的缓存与静态变量

Asp.Net Cache,从缓存中修改对象并更改缓存值

ASP .NET Core MemoryCache缓存

ASP.NET Core 6框架揭秘实例演示[16]:内存缓存与分布式缓存的使用

Asp.Net Core缓存管理

Asp.Net Core缓存管理