我正在寻找一个真正简单的示例,说明如何将对象添加到缓存、再次将其取出并删除它。
第二个答案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/