我正在从 Web 服务中提取数据,并且通常在我将其拉入之后,一旦数据不会改变。该数据将在不同的模型对象中引用。我想知道在 MVC 中缓存它的最佳方法是什么。我正在考虑模型类中的一个静态字典,它将使用这些数据,但多个线程可能正在读取和写入它。有什么建议么?
问问题
326 次
1 回答
0
我认为你的想法非常好(这就是我迄今为止一直在做的事情)。
唯一的问题是您需要避免对字典的并发访问,因此只需将其设为私有并让访问器方法对读取和写入都使用锁(将 K 和 V 替换为您自己的类型):
public class CacheClass {
private static object DictLock = new Object();
private static Dictionary<K, V> CachedData;
public static V ReadDictionary(K key) {
V temp;
lock (DictLock) {
temp = CachedData[key];
}
return temp;
}
public static void SetDictionaryValue(K key, V value) {
lock (DictLock) {
CachedData.Add(key, value);
}
}
}
其他替代方法涉及使用ConcurrentDictionary(.NET 4 或更高版本)。
这显然不涉及缓存老化。但在我看来,你似乎是在自己控制它。
于 2012-04-08T02:03:09.287 回答