标签:remove [1] net oms 写法 定时 并发 obj ica
以下是网上搜索的资料,仅供参考:
资料一:
ASP.NET缓存中Cache过期的三种策略(转自51CTO)
我们在页面上添加三个按钮并双击按钮创建事件处理方法,三个按钮使用不同的过期策略添加ASP.NET缓存。
-
ID="btn_InsertNoExpirationCache" runat="server" Text="插入永不过期缓存"
- OnClick="btn_InsertNoExpirationCache_Click" />
-
ID="btn_InsertAbsoluteExpirationCache" runat="server" Text="插入绝对时间
- 过期缓存" OnClick="btn_InsertAbsoluteExpirationCache_Click" />
-
ID="btn_InsertSlidingExpirationCache" runat="server" Text="插入变化时间
- 过期缓存" OnClick="btn_InsertSlidingExpirationCache_Click" />
三个按钮的Click事件处理方法如下:
- protected void btn_InsertNoExpirationCache_Click(object sender, EventArgs e)
- {
- DataSet ds = GetData();
- Cache.Insert("Data", ds);
- }
- protected void btn_InsertAbsoluteExpirationCache_Click(object sender, EventArgs e)
- {
- DataSet ds = GetData();
- Cache.Insert("Data", ds,null, DateTime.Now.AddSeconds(10), TimeSpan.Zero);
- }
- protected void btn_InsertSlidingExpirationCache_Click(object sender, EventArgs e)
- {
- DataSet ds = GetData();
- Cache.Insert("Data", ds, null, DateTime.MaxValue, TimeSpan.FromSeconds(10));
- }
我们来分析一下这三种ASP.NET缓存过期策略。
◆永不过期。直接赋值缓存的Key和Value即可
◆绝对时间过期。DateTime.Now.AddSeconds(10)表示缓存在10秒后过期,TimeSpan.Zero表示不使用平滑过期策略。
◆变化时间过期(平滑过期)。DateTime.MaxValue表示不使用绝对时间过期策略,TimeSpan.FromSeconds(10)表示缓存连续10秒没有访问就过期。
在这里,我们都使用了Insert()方法来添加缓存。其实,Cache还有一个Add()方法也能向缓存中添加项。不同之处在于Add()方法只能添加缓存中没有的项,如果添加缓存中已有的项将失败(但不会抛出异常),而Insert()方法能覆盖原来的项。
注意:和Application不同,这里不需要使用在插入ASP.NET缓存的时候进行锁操作,Cache会自己处理并发。
来源网址:http://developer.51cto.com/art/200907/140170.htm
资料二:(个人认为这个说的比较全面)
.net中的缓存技术:
缓存是一项在计算中广泛用来提高性能的技术,它将访问频率高的数据或构造成本高的数据存储在内存中。
在web开发中,性能是应用程序好坏的一个重要因素,而缓存对提高性能带来很大的帮助。让我们来看看缓存能解决的问题:
1. 性能——将相应数据存储起来以避免数据的重复创建、处理和传输,可有效提高性能。比如将不改变的数据缓存起来,例如国家列表等,这样能明显提高web程序的反应速度;
2.稳定性——同一个应用中,对同一数据、逻辑功能和用户界面的多次请求时经常发生的。当用户基数很大时,如果每次请求都进行处理,消耗的资源是很大的浪费,也同时造成系统的不稳定。
3.可用性——有时,提供数据信息的服务可能会意外停止,如果使用了缓存技术,可以在一定时间内仍正常提供对最终用户的支持,提高了系统的可用性。
然后让我们来看看在asp.net中的缓存:
1.在asp.net中,提供了专门用于缓存数据的cache对象,它的应用范围是应用程序域。生存期是和应用程序紧密相关的,每当应用程序启动的时候就重新创建cache对象。它与application对象的主要区别就是提供了专门用于缓存管理的特性,比如依赖和过期策略。
2.cache对象定义在system.web.caching命名空间,可以使用httpcontext类的cache属性或page对象的cache属性来得到cache的引用,cache对象除了存储键值对以外,还可以存储.net框架的对象。
缓存是把数据保存在内存以便下次调用,但是数据更新后,内存中的数据并没有更新,仍然是以前的数据,要怎样使缓存的数据也更新呢?我们采用依赖和过期策略。有三个方法可以实现:
1.文件依赖(file dependency)
2.键值依赖(key dependency)
3.基于时间的过期策略
首先我们来看文件依赖。文件依赖就是当硬盘上的某个(某些)文件更改时,强制移除缓存数据。
例:
cachedependency dep = new cachedependency(server.mappath("file.xml"));
cache.insert("key", "value", dep);
注意:文件依赖项是通过使用 cache.insert 并提供引用 xml 文件的 cachedependency 对象添加的。
键值依赖,指定缓存中的某个数据项更改时移除。
比如我们有key1和key2两个缓存,key2是键值依赖于key1的,但key1发生变化,key2就失效。
例:
//创建key1缓存
cache["key1"]="key1 value";
//是缓存key2键值依赖于key1
string[] dependencykey=new string[1];
dependencykey[0]="key1";
cachedependency dep=new cachedependency(null,dependencykey);
cache.insert("key2", "value2", dep);
基于时间的过期策略,按照预先定义的时间策略来使数据失效,可以是绝对时间(如某个日期的18:00)也可以是相对现在的相对时间。使用太短和太长的过期时间都不行,不是造成用不上的缓存数据,就是缓存了陈旧的数据并加重了缓存负担,所以可以使用高并发的测试来决定过期时间的最佳值。
例:
//绝对时间过期
cache.insert("dsn", connectionstring, null, datetime.now.addminutes(2), system.web.caching.cache.noslidingexpiration);
//相对时间过期(即上文提到的“滑动过期”或者“平滑过期”)
cache.insert("dsn", connectionstring, null, system.web.caching.cache.noabsoluteexpiration, timespan.fromseconds(10));
相似写法:
context.Cache.Insert(cacheKey, temp, dp, DateTime.MaxValue, TimeSpan.Zero);
--------------------------------------- 2013-7-10 begin ---------------------------------------
[MethodImpl(MethodImplOptions.Synchronized)] //对此方法实现线程同步
public void TestCache()
{
//add
System.Web.Caching.CacheDependency dp = new System.Web.Caching.CacheDependency(null, null);
HttpContext.Current.Cache.Add("key", "value", dp, DateTime.Now.AddHours(2), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Normal, null);
HttpContext.Current.Cache.Insert("key", "value");
HttpContext.Current.Cache.Insert("key", "value", dp);
//get
Object cache = HttpContext.Current.Cache["key"];
//remove
HttpContext.Current.Cache.Remove("key");
}
--------------------------------------- 2013-7-10 end ---------------------------------------
.NET4缓存过期策略摘录
标签:remove [1] net oms 写法 定时 并发 obj ica
原文地址:http://www.cnblogs.com/wpcnblog/p/7089070.html