私はasp.net mvcを使用してWebアプリケーションを開発しています。リストに<T>キャッシュ(セキュリティ操作)
私はキャッシュ内のリスト(私のモデルの製品クラスのリスト)を持っています。だから、私はこのキャッシュリストでCRUD操作を行います。私は、HttpContext.Current.CacheはtypeSafeだが、リストはないことを知っている。私は、競合を避けるためにスレッドセーフであるために私の操作を行うための最良の方法は何かを知りたいですか?
私のコードのようなものです:私はことを私は知っている...私は同時に、このキャッシュされたリストに書いて多くのユーザーを持つことになります
public static class ProjectCached {
const string key = "ProductList";
// my cached list
public static IList<Product> Products {
get {
if (HttpContext.Current.Cache[key] == null) {
HttpContext.Current.Cache.Insert(key, /* get data from database */, ...);
}
return (List<Product>)HttpContext.Current.Cache[key];
}
}
// my methods (operations on cached list)
public static void Increase(long id) {
var item = Products.FirstOrDefault(x => x.Id == id);
if (item != null) {
item.Prince += 1;
item.LastUpdate = DateTime.Now;
}
}
public static void Remove(long id) {
var item = Products.FirstOrDefault(x => x.Id == id);
if (item != null) {
Products.Remove(item);
}
}
// others methods
}
"ロック"キーワードを使用することができますが、どこに置く必要がありますか?私のオブジェクト上に見つかりましたか?私のリストに?
ありがとう
なぜ実際にそれらのオブジェクトをメモリにキャッシュしていますか? AppDomainがアンロードされたとき(またはコンピュータがクラッシュしたとき)に、データの損失を防ぐ方法を教えてください。 – Steven