[.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能
2015-07-16 08:28
881 查看
[.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能
本节导读:
上节说了缓存是以空间来换取时间的技术,介绍了客户端缓存和两种常用服务器缓布,本节主要介绍一种.NET中特别重要的缓布技术Cache.利用Cache提升程序性能。
1. 缓存Cache的命名空间
.NET中对缓存有两个命名空间
命名空间1:System.Web.Caching
命名空间2:System.Runtime.Caching
引用范围:这两个命名空间,都可以在Web和非WEB应用程序中引用.
生命周期:理论上来说是一直存在,我们可以设置过期时间。但当内存开销紧张的时候,也会清理缓存释放空间。因此我们后面的程序应用中会判断Cache的对象是否存在,不存在的情况下,重新创建来解决失效问题。
下面介绍一下缓存的具体使用方法。
2. 创建和读取缓存
缓存也是对向对象的,我们先创建一个实体类,还是比较熟悉的 “武功高手”类:
下面我们创建一个缓存,并读缓存,遍历对象
运行结果如下:
View Code
==============================================================================================
返回目录
[b] <如果对你有帮助,记得点一下推荐哦,如有[/b][b]有不明白或错误[b]之处,请多交流>[/b][/b]
<对本系列文章阅读有困难的朋友,请先看《.net 面向对象编程基础》>
<转载声明:技术需要共享精神,欢迎转载本博客中的文章,但请注明版权及URL>
.NET 技术交流群:467189533
==============================================================================================
本节导读:
上节说了缓存是以空间来换取时间的技术,介绍了客户端缓存和两种常用服务器缓布,本节主要介绍一种.NET中特别重要的缓布技术Cache.利用Cache提升程序性能。
1. 缓存Cache的命名空间
.NET中对缓存有两个命名空间
命名空间1:System.Web.Caching
命名空间2:System.Runtime.Caching
引用范围:这两个命名空间,都可以在Web和非WEB应用程序中引用.
生命周期:理论上来说是一直存在,我们可以设置过期时间。但当内存开销紧张的时候,也会清理缓存释放空间。因此我们后面的程序应用中会判断Cache的对象是否存在,不存在的情况下,重新创建来解决失效问题。
下面介绍一下缓存的具体使用方法。
2. 创建和读取缓存
缓存也是对向对象的,我们先创建一个实体类,还是比较熟悉的 “武功高手”类:
/// <summary> /// 类:武林高手 /// MartialArtsMaster /// </summary> public class MartialArtsMaster { /// <summary> /// 编号 /// </summary> public int id { get; set; } /// <summary> /// 姓名 /// </summary> public string name { get; set; } /// <summary> /// 门派 /// </summary> public string menpai { get; set; } /// <summary> /// 武功 /// </summary> public string kongFu { get; set; } }
下面我们创建一个缓存,并读缓存,遍历对象
//增加几个武林高手 List<MartialArtsMaster> masterList = new List<MartialArtsMaster>() { new MartialArtsMaster(){ id=1, name="段誉", menpai="天龙寺", kongFu="六脉神剑"}, new MartialArtsMaster(){ id=2, name="乔峰", menpai="丐帮", kongFu="降龙十八掌"}, new MartialArtsMaster(){ id=3, name="虚竹", menpai="逍遥派", kongFu="北冥神功"} }; //缓存的创建 System.Web.Caching.Cache objCache = HttpRuntime.Cache; objCache.Insert("MyCache", masterList); //缓存的读取 (objCache["MyCache"] as List<MartialArtsMaster>).ForEach(m => Console.WriteLine("名字:" + m.name + " 门派:" + m.menpai + " 武功:" + m.kongFu));
运行结果如下:
using System; using System.Web; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace KaJiMao.Common { /// <summary> /// Cache通用类 /// Yubinfeng /// Date:2015/07/16 public class CacheHelper { /// <summary> /// 获取数据缓存 /// </summary> /// <param name="CacheKey">键</param> public static object GetCache(string CacheKey) { System.Web.Caching.Cache objCache = HttpRuntime.Cache; return objCache[CacheKey]; } /// <summary> /// 设置数据缓存 /// </summary> public static void SetCache(string CacheKey, object objObject) { System.Web.Caching.Cache objCache = HttpRuntime.Cache; objCache.Insert(CacheKey, objObject); } /// <summary> /// 设置数据缓存 /// </summary> public static void SetCache(string CacheKey, object objObject, TimeSpan Timeout) { System.Web.Caching.Cache objCache = HttpRuntime.Cache; objCache.Insert(CacheKey, objObject, null, DateTime.MaxValue, Timeout, System.Web.Caching.CacheItemPriority.NotRemovable, null); } /// <summary> /// 设置数据缓存 /// </summary> public static void SetCache(string CacheKey, object objObject, DateTime absoluteExpiration, TimeSpan slidingExpiration) { System.Web.Caching.Cache objCache = HttpRuntime.Cache; objCache.Insert(CacheKey, objObject, null, absoluteExpiration, slidingExpiration); } /// <summary> /// 移除指定数据缓存 /// </summary> public static void RemoveAllCache(string CacheKey) { System.Web.Caching.Cache _cache = HttpRuntime.Cache; _cache.Remove(CacheKey); } /// <summary> /// 移除全部缓存 /// </summary> public static void RemoveAllCache() { System.Web.Caching.Cache _cache = HttpRuntime.Cache; IDictionaryEnumerator CacheEnum = _cache.GetEnumerator(); while (CacheEnum.MoveNext()) { _cache.Remove(CacheEnum.Key.ToString()); } } } }
View Code
==============================================================================================
返回目录
[b] <如果对你有帮助,记得点一下推荐哦,如有[/b][b]有不明白或错误[b]之处,请多交流>[/b][/b]
<对本系列文章阅读有困难的朋友,请先看《.net 面向对象编程基础》>
<转载声明:技术需要共享精神,欢迎转载本博客中的文章,但请注明版权及URL>
.NET 技术交流群:467189533
==============================================================================================
相关文章推荐
- scala数组
- Linux文件系统的实现
- JS 事件派发器EventDispatcher
- 【原创】 SharePoint Service Unavaliable
- Justinmind教程(3)——管理原型
- 函数作用
- 启动tomcat时startup.bar、catalina.bat等窗口一闪而过的解决方法
- 自己的自定义单元格(IOS)
- I - Fire Game
- 鹊桥仙·咏牵牛花
- 国军抗战全纪实
- Dairy20150716
- meta 数据解析
- 8.String to Integer (atoi) (INT; Overflow)
- 压缩解压总结
- tomcat启动时报webapps文件夹下的文件夹部署目录不正确的错误
- 缓存池扩展 (Buffer Pool Extension)实践
- Meta 元数据之百度开发适配器
- EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(一)
- 赫夫曼树