我需要为ASP.NET Web应用程序(一个实例)缓存最少一小时的非常少量的数据。显然这需要是线程安全的,所以我可以从我的请求中访问缓存。
我想在“过程中”这样做,而不是使用任何外部的东西。
实现此目的最简单的方法是什么?
答案 0 :(得分:1)
使用静态变量。您可以编写一个静态缓存类,包括更新逻辑(最多一小时),并将检索到的数据存储在静态成员中。
该类将保留在应用程序池中,直到它被回收。对于您的用例,这可能太频繁或太少。但缓存能力应该足够公平。
对于线程安全问题,您可以在此类中提供getter方法并使用lock
statement。
答案 1 :(得分:1)
您可以使用ASP.NET为您提供的Cache对象。
如果存在,则可以创建一个返回缓存对象的属性,否则从db中检索它。
private myClass myProp {
get{
if (Cache["Key1"] == null)
Cache.Add("Key1", "Value 1", null, DateTime.Now.AddMinutes(60), Cache.NoSlidingExpiration, CacheItemPriority.High);
return (myClass)Cache["Key1"];
}
}