WisDom.Net --數據緩存html
1.幾種緩存方式數據庫
1.靜態全局變量緩存
C#靜態變量使用 static 修飾符進行聲明,在類被實例化時建立,經過類進行訪問不帶有 static 修飾符聲明的變量稱作非靜態變量,在對象被實例化時建立,經過對象進行訪問一個類的全部實例的同一C#靜態變量都是同一個值,同一個類的不一樣實例的同一非靜態變量能夠是不一樣的值。靜態函數的實現裏不能使用非靜態成員,如非靜態變量、非靜態函數等。ide
2.System.Runtime.Caching 中緩存類庫函數
這個是.Net 4.0新出的一個命名空間,提供緩存對全部 .NET framework 應用程序 (而不單單是 ASP.NET) 進行訪問, 高速緩存是可擴展的。 您 能夠建立自定義高速緩存提供程序。例如,您能夠不使用默認的內存高速緩存引擎,而是建立自定義提供程序,在數據庫、自定義對象或文件系統中存儲高速緩存數據。具體參見MSDN.這裏不展開講ui
3.頁面緩存,(顯然這裏不合適)spa
2.WisDom.net.DataCahce 設計構想.net
1.咱們設計數據緩存基類以下。這裏使用模板模式(附上基類的代碼但願你們指正)設計
public abstract class DataCacheCoomon<T> { protected List<T> DataCacheDict = null; private static object _obj = new object(); public DataCacheCoomon() { if (DataCacheDict==null||DataCacheDict.Count == 0) { lock (_obj) { if (DataCacheDict == null || DataCacheDict.Count == 0) { DataCacheDict = new List<T>(); GetDataFromDb(); } } } } protected abstract void GetDataFromDb(); /// <summary> /// 增長數據緩存 /// </summary> /// <param name="dataItem"></param> public void AddDataCache(List<T> dataItem) { foreach (T data in dataItem) { DataCacheDict.Add(data); } } /// <summary> /// 刪除數據緩存 /// </summary> /// <param name="dataItem"></param> public void DelDataCache(List<T> dataItem) { foreach (T data in dataItem) { DataCacheDict.Remove(data); } } /// <summary> /// 獲取字典緩存 /// </summary> /// <returns></returns> public List<T> GetDataCacheDict() { return DataCacheDict; } }
2.在具體某個緩存項目時都須要繼承上面的基類code
3. 使用並行方式將數據加到MemoryCache 中 示例以下(一個簡單的例子給你們參考,)從緩存中獲取
ObjectCache objectCache = MemoryCache.Default;// Parallel.Invoke(() => { CacheItem Iten = new CacheItem("aaa", 1); objectCache.Add(Iten, new CacheItemPolicy()); }, () => { CacheItem Iten = new CacheItem("Bbb", 1); objectCache.Add(Iten, new CacheItemPolicy()); });