缓存是一种将在大多数项目中使用的技术。本文主要介绍内存缓存在。网芯系列。边肖认为这很好。现在分享给大家,给大家一个参考。来和边肖一起看看吧。
目录
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(点击加入。网络组)