c# - 寻找一个非常简单的缓存示例

标签 c# asp.net-mvc caching

我正在寻找一个真正简单的示例,说明如何将对象添加到缓存、再次将其取出并删除它。

第二个答案here是我希望看到的那种例子......

List<object> list = new List<Object>();

Cache["ObjectList"] = list;                 // add
list = ( List<object>) Cache["ObjectList"]; // retrieve
Cache.Remove("ObjectList");                 // remove

但是当我尝试这样做时,在第一行我得到:

'Cache' is a type, which is not valid in the given context.

在第三行我得到:

An object method is required for the non-static field blah blah blah

那么,假设我有一个 List<T> ...

var myList = GetListFromDB()

现在我只想添加 myList到缓存,将其取回并删除。

最佳答案

.NET 提供了一些缓存类

  • System.Web.Caching.Cache - ASP.NET 中的默认缓存机制。您可以通过属性 Controller.HttpContext.Cache 获取此类的实例,也可以通过单例 HttpContext.Current.Cache 获取它。不应显式创建此类,因为在后台它使用内部分配的另一个缓存引擎。 要使您的代码正常工作,最简单的方法是执行以下操作:

    public class AccountController : System.Web.Mvc.Controller{ 
      public System.Web.Mvc.ActionResult Index(){
        List<object> list = new List<Object>();
    
        HttpContext.Cache["ObjectList"] = list;                 // add
        list = (List<object>)HttpContext.Cache["ObjectList"]; // retrieve
        HttpContext.Cache.Remove("ObjectList");                 // remove
        return new System.Web.Mvc.EmptyResult();
      }
    }
    
  • System.Runtime.Caching.MemoryCache - 此类可以在用户代码中构建。它具有不同的界面和更多功能,如更新\删除回调、区域、监视器等。要使用它,您需要导入库 System.Runtime.Caching。它也可以在 ASP.net 应用程序中使用,但您必须自己管理它的生命周期。

    var cache = new System.Runtime.Caching.MemoryCache("MyTestCache");
    cache["ObjectList"] = list;                 // add
    list = (List<object>)cache["ObjectList"]; // retrieve
    cache.Remove("ObjectList");                 // remove
    

关于c# - 寻找一个非常简单的缓存示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41684213/

相关文章:

System.Type 的 C# 反序列化从加载的程序集中抛出类型

c# - .NetCore 3.1API 无法加载文件或程序集 'Microsoft.AspNetCore.Hosting.Abstractions'

c# - asp.net mvc 中的动态类型转换编辑操作 : how can I handle multiple datatypes without throwing an exception?

c# - 如何在单独的线程中打开一个窗口?

c# - 正则表达式搜索和替换,其中替换是搜索词的模组

php - 缓存或不缓存

Spring 缓存: force update cache based on condition

java - 如何从EhCache获取初始数据快照

c# - 如何将 asp.net webform 和 mvc 4 应用程序迁移到 AngularJS 站点

asp.net-mvc - 与使用 HTML + Javascript + Services 应用程序相比,使用传统 MVC 框架有哪些优势?