作家
登录

关于ASP.NET内存缓存你需要知道的10点

作者: 来源: 2017-06-23 09:03:19 阅读次 我要评论

  1. public IActionResult Index() 
  2.  
  3. { 
  4.  
  5.     var cts = new CancellationTokenSource(); 
  6.  
  7.     cache.Set("cts", cts); 
  8.  
  9.  
  10.     MemoryCacheEntryOptions options =  
  11.  
  12. new MemoryCacheEntryOptions(); 
  13.  
  14.     options.AddExpirationToken( 
  15.  
  16. new CancellationChangeToken(cts.Token)); 
  17.  
  18.     options.RegisterPostEvictionCallback 
  19.  
  20. (MyCallback, this); 
  21.  
  22.     cache.Set<string>("timestamp",  
  23.  
  24. DateTime.Now.ToString(), options); 
  25.  
  26.  
  27.     cache.Set<string>("key1", "Hello World!",  
  28.  
  29. new CancellationChangeToken(cts.Token)); 
  30.  
  31.     cache.Set<string>("key2", "Hello Universe!",  
  32.  
  33. new CancellationChangeToken(cts.Token)); 
  34.  
  35.  
  36.     return View(); 
  37.  
  38. }  

代码起首创建了一个 CancellationTokenSource 对象,该对象被存储为一个自力的缓存项 cts。然后像之前那样创建出 MemoryCacheEntryOptions 对象。这时刻调用 MemoryCacheEntryOptions 的 AddExpirationToken() 办法来指定过时令牌。我们不会在这里商量 CancellationChangeToken 的细节。可以如许懂得,过时令牌能让你有权力让一个缓存项过时。如不雅令牌处于晃荡状况的话,则缓存项就会在缓存中保持,而如不雅令牌被撤消掉落了,则该缓存项就将大年夜缓存中删除掉落。一旦缓存项大年夜缓存中删除掉落了,MyCallback 就像之前一样被调用。之后代码又创建了两个缓存项—— key1 和 key2。在添加这两个缓存项时,Set() 的第三个参数将基于之前所创建的 cts 对象传递一个 CancellationChangeToken。

如许做就意味着这里我们有了三个键 - timestamp 是主键,而 key1 和 key2 则依附于 timestamp。当 timestamp 被删除时,key1 和 key2 也应当被删除掉落。要删除 timestamp,你须要在代码中的某个处所撤消其令牌。我们可以零丁的一个 action(Remove())中进行如许的操作。

  1. public IActionResult Remove() 
  2.  
  3. { 
  4.  
  5.     CancellationTokenSource cts =  
  6.  
  7. cache.Get<CancellationTokenSource>("cts"); 
  8.  
  9.     cts.Cancel(); 
  10.  
  11.     return RedirectToAction("Show"); 
  12.  
  13. }  

这里我们先获取到之前存储的 CancellationTokenSource 对象,并调用它的 Cancel() 办法。如许做会把 timestamp,key1 以及 key2 都删除掉落。 你可以经由过程在 Show() 这个 action 中获取一下所有这三个键来确认它们是否已经被删除掉落了。


  推荐阅读

  Python MySQL数据库连接池组件

引言pymysqlpool 是数据库对象包中新成员,目标是能供给一个实用的数据库连接池中心件,大年夜而避免在应用中频繁地创建和释放数据库连接资本。功能 连接池本身是线程安然的,可在多线>>>详细阅读


本文标题:关于ASP.NET内存缓存你需要知道的10点

地址:http://www.17bianji.com/lsqh/35873.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)