手机版

的内存介绍 NET核心系列

时间:2021-08-30 来源:互联网 编辑:宝哥软件园 浏览:

缓存是一项将在大多数项目中使用的技术,它可能与设置、添加、获取、删除和清除相关联。那么微软给我们带来了怎样的缓存体验呢?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说起

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或者邮箱删除。