WisDom.Net --數據緩存
1.幾種緩存方式
1.靜態全局變量
C#靜態變量使用 static 修飾符進行聲明,在類被實例化時創建,通過類進行訪問不帶有 static 修飾符聲明的變量稱做非靜態變量,在對象被實例化時創建,通過對象進行訪問一個類的所有實例的同一C#靜態變量都是同一個值,同一個類的不同實例的同一非靜態變量可以是不同的值。靜態函數的實現里不能使用非靜態成員,如非靜態變量、非靜態函數等。
2.System.Runtime.Caching 中緩存類庫
這個是.Net 4.0新出的一個命名空間,提供緩存對所有 .NET framework 應用程序 (而不僅僅是 asp.net) 進行訪問,高速緩存是可擴展的。您 可以創建自定義高速緩存提供程序。例如,您可以不使用默認的內存高速緩存引擎,而是創建自定義提供程序,在數據庫、自定義對象或文件系統中存儲高速緩存數據。具體參見MSDN.這里不展開講
3.頁面緩存,(顯然這里不合適)
2.WisDom.net.DataCahce 設計構想
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.在具體某個緩存項目時都需要繼承上面的基類
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()); });
新聞熱點
疑難解答