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()); });