在Java Spring Boot中,我可以轻松地使用注释@EnableCaching
启用缓存,并使方法使用@Cacheable
缓存结果,这样,对我的方法使用完全相同的参数的任何输入都不会调用方法,但立即使用缓存的结果返回。
C#中是否有类似的东西?
我过去所做的是我必须实现自己的缓存类,我自己的数据结构,这是一个很大的麻烦。我只想让程序缓存结果,并在输入参数相同的情况下返回精确结果。
编辑:我不想使用任何第三方的东西,所以没有MemCached,没有Redis,没有RabbitMQ等...只是在寻找像Java的@Cacheable
这样非常简单而优雅的解决方案。
答案 0 :(得分:0)
缓存
缓存是Microsoft提供的最有价值的功能。它是一种相对较小的内存,但是可以很快访问。它实质上存储了可能再次使用的信息。例如,Web浏览器通常使用缓存通过在本地(例如,本地计算机)上存储网页文件的副本来使网页加载更快。
缓存
缓存是将数据存储到缓存中的过程。使用C#语言进行缓存非常容易。 System.Runtime.Caching.dll提供了用于在C#中进行缓存的功能。在此图中,我使用以下类:
ObjectCache
MomoryCache
CacheItemPolicy
:CacheItem类提供高速缓存条目的逻辑表示,该条目可以使用RegionName属性包含区域。它存在于System.Runtime.Caching中。
:该类也位于System.Runtime.Caching下,它表示实现缓存中内存的类型。
:代表特定缓存条目的一组收回和到期详细信息。
.NET
提供
System.Web.Caching.Cache
-ASP.NET
中的默认缓存机制。您可以通过属性Controller.HttpContext.Cache
获取此类的实例,也可以通过单例HttpContext.Current.Cache
获取此类。不应明确创建此类,因为它在后台使用了另一个内部分配的缓存引擎。要使代码正常工作,最简单的方法是执行以下操作:
public class DataController : 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 -此类可以用用户代码构造。它具有不同的界面和更多功能,例如update\remove
回调,区域,监视器等。要使用它,您需要导入库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