gpt4 book ai didi

.NET Core系列之MemoryCache 初识

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 29 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章.NET Core系列之MemoryCache 初识由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

Cache是一个绝大多数项目会用到的一个技术,说起到缓存可能就联想到 Set、Add、Get、Remove、Clear 这几个方法。那么在.NET Core中微软给我们带来了什么样的缓存体验呢?今天我们就来介绍下”Microsoft.Extensions.Caching.Memory”。由于这个包名称过长,下文使用MSCache来代替.

MSCache能做什么?

  。

  1. 绝对过期支持
  2. 滑动过期支持(指定一个时间,TimeSpan,指定时间内有被Get缓存时间则顺延,否则过期)
  3. 过期回调
  4. 自定义过期

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说起

  。

.NET Core系列之MemoryCache 初识

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

很好理解 。

CreateEntry 添加一个缓存 。

Remove 删除一个缓存 。

TryGetValue 获取一个缓存(并可得到具体的缓存是否存在) 。

ICacheEntry 。

.NET Core系列之MemoryCache 初识

ICacheEntry 有以上成员,同时实现了 IDisposable 接口,为什么要实现这个接口?用来释放缓存吗?这个在接下来的篇幅会做解释.

Key 缓存key 。

Value 缓存值 。

AbsoluteExpiration 绝对过期时间,为null则条件无效 。

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

SlidingExpiration 滑动过期时间 。

ExpirationTokens 提供用来自定义缓存过期 。

PostEvictionCallbacks 缓存失效回调 。

Priority 缓存项优先级(在缓存满载的时候绝对清除的顺序) 。

Size 代表缓存数据的大小,在内存缓存中一般为null 。

我们来试试 。

.NET Core系列之MemoryCache 初识

恩,妥妥的,输出 “True” 和 “1”.

.NET Core系列之MemoryCache 初识

纳尼,居然是“False”和null.

玄学 。

有些同学可能已经注意到了 ICacheEntry 实现了IDisposable接口。为什么ICacheEntry要实现 IDisposable 接口呢?讲真我也不知道。反正大家知道它是具体像MemoryCache插入缓存的方法就行.

这有点违背了我们之前所学的 IDisposable 用来释放资源的原则.

正确的打开方式 。

.NET Core系列之MemoryCache 初识

开发者的体验

  。

说到底还不是 Set、Add、Get、Remove、Clear ?跟之前差不多啊.

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

.NET Core系列之MemoryCache 初识

Get 比较好理解这边不多做累述.

Set 设置一个新的缓存条目(相同key的会被移除)就好像被set的这个key是一个完全新的东西,所以也不会继承之前的过期时间和过期token.

GetOrCreate 。

基本都用它,我们来看看.

.NET Core系列之MemoryCache 初识

两种方式 GetOrCreate 减少了第一种模式的判断。回调里面的entry就是ICacheEntry可以用来设置缓存的其它选项.

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

.NET Core系列之MemoryCache 初识

写在最后

  。

MSCache跟Orchard中的Caching非常的相识,或者说借鉴了Orchard中良好的Caching重构而来.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

.NET技术栈QQ群:384413261(点击加入 .NET Group) 。

原文链接:https://www.cnblogs.com/ants/p/8477223.html 。

最后此篇关于.NET Core系列之MemoryCache 初识的文章就讲到这里了,如果你想了解更多关于.NET Core系列之MemoryCache 初识的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com