.NET Core系列之MemoryCache 初识

.NET Core系列之MemoryCache 初识

缓存是一种将在大多数项目中使用的技术。本文主要介绍内存缓存在。网芯系列。边肖认为这很好。现在分享给大家,给大家一个参考。来和边肖一起看看吧。

目录

MSCache能做什么?说到IMemoryCache,开发者的体验写在最后。缓存是一种将在大多数项目中使用的技术。据说它在起缓存作用时,可能与Set、Add、Get、Remove、Clear方法有关。那么微软带给我们的是怎样的缓存体验呢?网芯?今天我们将介绍“微软。扩展。缓存。记忆”。因为这个包名太长,下面用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 . nu get . org/packages/Microsoft . extensions . caching . memory/2 . 0 . 0

从IMemoryCache说起

IMemoryCache提供了三个方法并实现了IDisposable接口。

很好理解。

CreateEntry添加缓存

移除缓存

TryGetValue获取一个缓存(并且可以发现特定的缓存是否存在)

ICacheEntry

ICacheEntry具有上述成员,同时实现了IDisposable接口。为什么要实现这个接口?是用来释放缓存的吗?这将在以下几页中解释。

密钥缓存密钥

值缓存值

AbsoluteExpiration是绝对过期时间;如果为空,则条件无效。

绝对过期相对Vetonow相对于当前时间的绝对过期时间(使用TimeSpan),null条件无效。

滑动到期滑动到期时间

ExpirationTokens用于自定义缓存过期时间。

PostEvictionCallbacks缓存失效回调

优先级缓存项目优先级(缓存已满时绝对清除的顺序)

Size表示缓存数据的大小,在内存缓存中通常为空。

我们来试试

嗯,适当地,输出“真”和“1”。

纳尼,这是“假”和空的。

玄学

有些同学可能注意到了,ICacheEntry实现了IDisposable接口。ICacheEntry为什么要实现IDisposable接口?老实说,我不知道。无论如何,我们都知道,这是将MemoryCache插入缓存的一种具体方式。

这和我们之前学过的IDisposable用来释放资源的原理有点违背。

正确的打开方式

开发者的体验

说到底,不就是设置、添加、获取、移除、清除吗?就像以前一样。

MS团队提供了一个CacheExtensions扩展方法类。

Get很好理解,这里不多赘述。

设置新的缓存条目(具有相同密钥的条目将被删除)就好像设置的密钥是一个全新的东西,因此它不会继承以前的过期时间和过期令牌。

GetOrCreate

基本都用上了,来看看吧。

GetOrCreate的两种方式减少了对第一种模式的判断。回调中的条目是ICacheEntry可以用来设置缓存的其他选项。

同时,在这个任务满天飞的日子里,还提供了GetOrCreateAsync扩展方法。

写在最后

MSCache对果园中的缓存非常熟悉,或者说是由果园中的好缓存重构而来。

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。NET技术栈QQ群:384413261(点击加入。网络组)

.NET Core系列之MemoryCache 初识