的内存介绍 NET核心系列
缓存是一项将在大多数项目中使用的技术,它可能与设置、添加、获取、删除和清除相关联。那么微软给我们带来了怎样的缓存体验呢?NET Core?今天我们将介绍“微软。扩展。缓存。记忆”。因为包名太长,所以改用MSCache。
MSCache能做什么?
绝对过期支持滑动过期支持(指定一个时间,TimeSpan,如果在指定时间内有缓存的时间,会延期,否则会过期)过期回调自定义过期MSCache最新的官方版本是2.0.0,预览版是2.1.0,会和一起发布。NETCore 2.1。本文使用2.0.0版GitHub上的开源,仓库地址是:https://github.com/aspnet/Caching
NuGet的地址是:https://www.nuget.org/packages/Microsoft.extensions.caching.memory/2.0.0
从IMemoryCache说起
![](https://www.baoge.net/d/file/p/2021/08-30/ad4494270eb530978bd5290e332cc44a.png)
IMemoryCache提供了三种方法,并实现了IDisposable接口。
这很容易理解
创建条目添加缓存
移除移除缓存
尝试获取缓存(并获取特定缓存是否存在)
ICacheEntry
ICacheEntry拥有上述成员,同时实现了IDisposable接口。为什么要实现这个接口?用来释放缓存?这将在下面几页解释。
密钥缓存密钥
值缓存值
绝对到期时间。如果为空,则条件无效
绝对expirationrelativetonow的绝对到期时间相对于当前时间(使用TimeSpan),空条件无效
滑动到期时间
提供了过期令牌来自定义缓存过期
PostEvictionCallbacks缓存无效回调
优先级缓存项目优先级(缓存已满时绝对清除的顺序)
大小表示缓存数据的大小,在内存缓存中通常为空
让我们试试
嗯,适当地,输出“真”和“1”。
纳尼,是“假”空。
形而上学
一些学生可能已经注意到ICacheEntry实现了IDisposable接口。为什么ICacheEntry要实现IDisposable接口?不知道是不是真的。无论如何,众所周知,它就像将MemoryCache插入缓存的方法一样。
这有点违背了IDisposable用来释放资源的原理。
正确的打开方法
开发者的体验
到底是设置、添加、获取、删除还是清除?就像以前一样。微软团队提供了一个缓存扩展扩展方法类
Get比较容易理解,所以这里不需要重复。
Set设置一个新的缓存条目(相同的密钥将被删除),就好像set密钥是全新的一样,因此它不会继承以前的过期时间和过期令牌。
获取或创建
我们基本上使用它。让我们看看。
GetOrCreate的两种方式降低了对第一种模式的判断。回调中的条目是ICacheEntry可以用来设置缓存的其他选项。
同时,在任务满天飞的今天,它还提供了GetOrCreateAsync的扩展方法。
写在最后
MSCache对果园缓存非常熟悉,或者是从好的果园缓存中重构出来的。以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。NET技术栈QQ群:384413261(点击加入。NET组)
版权声明:的内存介绍 NET核心系列是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。