简单的C#ASP.NET缓存实现
我需要建立一个简单的C#ASP.NET缓存实现,c#,asp.net,caching,C#,Asp.net,Caching,我需要建立一个列表并缓存该列表并能够附加到其中。我还需要能够轻松地将它吹走并重新创建它。实现这一点的简单方法是什么?我发现本教程非常有用 这是一个样本 List<object> list = new List<Object>(); Cache["ObjectList"] = list; // add list = ( List<object>) Cache["ObjectList"]; // retrieve Cache
列表
并缓存该列表并能够附加到其中。我还需要能够轻松地将它吹走并重新创建它。实现这一点的简单方法是什么?我发现本教程非常有用
List<object> list = new List<Object>();
Cache["ObjectList"] = list; // add
list = ( List<object>) Cache["ObjectList"]; // retrieve
Cache.Remove("ObjectList"); // remove
List List=新列表();
缓存[“ObjectList”]=list;//添加
列表=(列表)缓存[“对象列表”];//检索
Cache.Remove(“ObjectList”);//去除
也许是这样的
using System;
using System.Collections.Generic;
using System.Web;
public class MyListCache
{
private List<object> _MyList = null;
public List<object> MyList {
get {
if (_MyList == null) {
_MyList = (HttpContext.Current.Cache["MyList"] as List<object>);
if (_MyList == null) {
_MyList = new List<object>();
HttpContext.Current.Cache.Insert("MyList", _MyList);
}
}
return _MyList;
}
set {
HttpContext.Current.Cache.Insert("MyList", _MyList);
}
}
public void ClearList() {
HttpContext.Current.Cache.Remove("MyList");
}
}
的缓存部分虽然不简单,但仍然是对缓存中需要考虑的一些有用内容的一个很好的回顾
具体来说,两个类InMemoryCache
和AspNetCache
及其相关测试:
- 及
与问题所做的类似,您可以将
HttpRuntime.Cache
或HttpContext.Current.Items
或HttpContext.Current.Cache
封装在ICache的实现中。。。可使用的但我会做一些改变。首先,我总是返回一个有效的列表。如果它不存在,创建一个新的空集合并缓存它,而不是仅仅返回缓存[“MyList”]中的任何内容,它可能为空。是的,Bryan,这个示例非常简单。-但我认真考虑了你的建议,更新了我的样品。谢谢。在许多/大多数现实情况下,您都希望刷新对某种持久性存储的更改。请记住,您的列表不是线程安全的。
// Get an instance
var listCache = new MyListCache();
// Add something
listCache.MyList.Add(someObject);
// Enumerate
foreach(var o in listCache.MyList) {
Console.WriteLine(o.ToString());
}
// Blow it away
listCache.ClearList();