网站服务器搭建的步骤,做一个官网需要多少钱,怎样上传网站到百度,国内外网站开发技术MSCache能做什么#xff1f;绝对过期支持滑动过期支持#xff08;指定一个时间#xff0c;TimeSpan#xff0c;指定时间内有被Get缓存时间则顺延#xff0c;否则过期#xff09;过期回调自定义过期MSCache目前最新的正式版是 2.0.0#xff0c;预览版是2.1.0#xff0c;… MSCache能做什么绝对过期支持滑动过期支持指定一个时间TimeSpan指定时间内有被Get缓存时间则顺延否则过期过期回调自定义过期MSCache目前最新的正式版是 2.0.0预览版是2.1.0会与.NETCore 2.1一起发布。本篇用了2.0.0版本开源在GitHub上仓库地址是https://github.com/aspnet/CachingNuGet地址为https://www.nuget.org/packages/Microsoft.Extensions.Caching.Memory/2.0.0回到目录从IMemoryCache说起IMemoryCache 就提供了三个方法并实现了 IDisposable 接口。很好理解CreateEntry 添加一个缓存Remove 删除一个缓存TryGetValue 获取一个缓存并可得到具体的缓存是否存在ICacheEntryICacheEntry 有以上成员同时实现了 IDisposable 接口为什么要实现这个接口用来释放缓存吗这个在接下来的篇幅会做解释。Key 缓存keyValue 缓存值AbsoluteExpiration 绝对过期时间为null则条件无效AbsoluteExpirationRelativeToNow 相对当前时间的绝对过期时间使用TimeSpan为null条件无效SlidingExpiration 滑动过期时间ExpirationTokens 提供用来自定义缓存过期PostEvictionCallbacks 缓存失效回调Priority 缓存项优先级在缓存满载的时候绝对清除的顺序Size 代表缓存数据的大小在内存缓存中一般为null我们来试试恩妥妥的输出 “True” 和 “1”。纳尼居然是“False”和null。玄学有些同学可能已经注意到了 ICacheEntry 实现了IDisposable接口。为什么ICacheEntry要实现 IDisposable 接口呢讲真我也不知道。反正大家知道它是具体像MemoryCache插入缓存的方法就行。这有点违背了我们之前所学的 IDisposable 用来释放资源的原则。正确的打开方式回到目录开发者的体验说到底还不是 Set、Add、Get、Remove、Clear 跟之前差不多啊。MS团队提供了一个 CacheExtensions 扩展方法类Get 比较好理解这边不多做累述。Set 设置一个新的缓存条目相同key的会被移除就好像被set的这个key是一个完全新的东西所以也不会继承之前的过期时间和过期token。GetOrCreate基本都用它我们来看看。两种方式 GetOrCreate 减少了第一种模式的判断。回调里面的entry就是ICacheEntry可以用来设置缓存的其它选项。同时在这个Task满天飞的日子里还提供了了 GetOrCreateAsync 扩展方法。回到目录写在最后MSCache跟Orchard中的Caching非常的相识或者说借鉴了Orchard中良好的Caching重构而来。下一篇会主要介绍MSCache中的缓存过期机制。.NET技术栈QQ群384413261相关文章拥抱.NET Core系列依赖注入1拥抱.NET Core系列依赖注入2原文http://www.cnblogs.com/ants/p/8477223.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com