请细心不雅察这段代码。 MyCallback() 是 HomeController 类琅绫擎的一个私有静态函数,它有四个参数。前面两个参数表示方才删除的缓存项的键和值,第三个参数表示的是该数据项被删除的原因。EvictionReason 是一个列举类型,它保护者各类可能的删除原因,如过时,删除以及调换。
在回调函数的内部,我们会基于删除的原因结垢荷琐字符串消息。我们想要将此消息设置成别的一个缓存项。如许做的话就须要拜访 HomeController 的缓存对象,此时状况参数就可以排上用处了。应用状况对象,你可以对 HomeController 的缓存对象进行控制,并应用 Set() 增长一个 callbackMessage 缓存项。
你可以经由过程 Show() 这个 action 来拜访到 callbackMessage,如下所示:
- public IActionResult Show(){
- string timestamp = cache.Get<string>("timestamp");
- ViewData["callbackMessage"] =
- cache.Get<string>("callbackMessage");
- return View("Show",timestamp);
- }
最后就可以在 Show 视图中显示出来了:
为了测试回调,我们须要运行应用法度榜样并跳转到 /Home/Index。然后跳转到 /Home/Show,并一向地刷新浏览器。在某些时光点,因为其 AbsoluteExpiration 设置之后,时光戳项目将会过时。你会看到如许的 callbackMessage:
9. 你可以设置缓存项的优先级
正如你可以设置缓存项的到期策略一样,你还可认为缓存项付与优先级。如不雅办事器内存紧缺的话,就会基于此优先级对缓存项进行清理以收受接收内存。 想要设置优先级的话,就要再一次用到 MemoryCacheEntryOptions。
- MemoryCacheEntryOptions options =
- new MemoryCacheEntryOptions();
- options.Priority = CacheItemPriority.Normal;
- cache.Set<string>("timestamp",
- DateTime.Now.ToString(), options);
MemoryCacheEntryOptions 的 Priority 属性让你可以应用 CacheItemPriority 列举来设置缓存项的优先级取值。可选的值有 Low,Normal,High 以及 NeverRemove。
10. 你可以设置多个缓存项之间的依附关系
- <h1>TimeStamp : @Model</h1>
- <h3>@ViewData["callbackMessage"]</h3>
- <h2>@Html.ActionLink("Go back", "Index", "Home")</h2>
你还可以对一组缓存项目之间的依附关系进行设置,例如在删除一个缓存项时,所有依附的项也会被删除。 如果你想要懂得它是若何工作的,可以像下面如许对 Index()这个 action 做一下修改:
推荐阅读
引言pymysqlpool 是数据库对象包中新成员,目标是能供给一个实用的数据库连接池中心件,大年夜而避免在应用中频繁地创建和释放数据库连接资本。功能 连接池本身是线程安然的,可在多线>>>详细阅读
地址:http://www.17bianji.com/lsqh/35873.html
1/2 1