- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章.NET Core系列之MemoryCache 初识由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
Cache是一个绝大多数项目会用到的一个技术,说起到缓存可能就联想到 Set、Add、Get、Remove、Clear 这几个方法。那么在.NET Core中微软给我们带来了什么样的缓存体验呢?今天我们就来介绍下”Microsoft.Extensions.Caching.Memory”。由于这个包名称过长,下文使用MSCache来代替.
。
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 就提供了三个方法并实现了 IDisposable 接口.
很好理解 。
CreateEntry 添加一个缓存 。
Remove 删除一个缓存 。
TryGetValue 获取一个缓存(并可得到具体的缓存是否存在) 。
ICacheEntry 。
ICacheEntry 有以上成员,同时实现了 IDisposable 接口,为什么要实现这个接口?用来释放缓存吗?这个在接下来的篇幅会做解释.
Key 缓存key 。
Value 缓存值 。
AbsoluteExpiration 绝对过期时间,为null则条件无效 。
AbsoluteExpirationRelativeToNow 相对当前时间的绝对过期时间(使用TimeSpan),为null条件无效 。
SlidingExpiration 滑动过期时间 。
ExpirationTokens 提供用来自定义缓存过期 。
PostEvictionCallbacks 缓存失效回调 。
Priority 缓存项优先级(在缓存满载的时候绝对清除的顺序) 。
Size 代表缓存数据的大小,在内存缓存中一般为null 。
我们来试试 。
恩,妥妥的,输出 “True” 和 “1”.
纳尼,居然是“False”和null.
玄学 。
有些同学可能已经注意到了 ICacheEntry 实现了IDisposable接口。为什么ICacheEntry要实现 IDisposable 接口呢?讲真我也不知道。反正大家知道它是具体像MemoryCache插入缓存的方法就行.
这有点违背了我们之前所学的 IDisposable 用来释放资源的原则.
正确的打开方式 。
。
说到底还不是 Set、Add、Get、Remove、Clear ?跟之前差不多啊.
MS团队提供了一个 CacheExtensions 扩展方法类 。
Get 比较好理解这边不多做累述.
Set 设置一个新的缓存条目(相同key的会被移除)就好像被set的这个key是一个完全新的东西,所以也不会继承之前的过期时间和过期token.
GetOrCreate 。
基本都用它,我们来看看.
两种方式 GetOrCreate 减少了第一种模式的判断。回调里面的entry就是ICacheEntry可以用来设置缓存的其它选项.
同时在这个Task满天飞的日子里,还提供了了 GetOrCreateAsync 扩展方法.
。
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的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我读了MSDN documentation但并没有真正理解它。 我相信Set的行为是“替换现有的,或添加”(原子地)。 正确吗? 最佳答案 如果该键已存在值, Add 不会执行任何操作(返回 fals
我试图找到一种方法让 .net 4.0 MemoryCache.Default 实例使用不区分大小写的比较器。 那可能吗? var bob = new object(); MemoryCache.De
我试图弄清楚应该如何使用 MemoryCache 以避免出现内存不足异常。我来自 ASP.Net 背景,缓存管理它自己的内存使用,所以我希望 MemoryCache 会做同样的事情。正如我制作的波纹管
在 Controller 类中,我有 using Microsoft.Extensions.Caching.Memory; private IMemoryCache _cache; private r
Memcached API 有一个 Touch() 方法,它可以更新给定 key 的过期策略。如何使用 .Net ObjectCache 类最好地完成此任务? 我能看到的最好的办法是删除对象并重新添加
当使用 MemoryCache 时,可以设置 AbsoluteExpiration AbsoluteExpirationRelativeToNow 例子: cache.GetOrCreate(
根据 MSDN 文档 here : Do not create MemoryCache instances unless it is required. If you create cache ins
我需要添加缓存功能并找到了一个名为 MemoryCache 的新类。但是,我发现 MemoryCache 有点残缺(我需要区域功能)。除其他事项外,我需要添加类似 ClearAll(region) 的
在我的应用程序中,我使用 MemoryCache,但我不希望项目过期。因此,项目将使用默认策略插入到缓存中,而无需设置 AbsoulteExpiration 或 SlidingExpiration。
MemoryCache类公开了一个名为 .AddOrGetExisting 的方法这是一种线程安全的方法,如果存在则获取,如果不存在则添加。 如果缓存对象不存在,此方法返回 NULL。我想我理解它的值
MemoryCache 是否具有缓存固定数量项目的功能? 例如我们只对从数据库中缓存 2000 个项目感兴趣。在不断向缓存中添加项目的同时,如果超过指定的项目数,则可以删除最旧的项目。 如果不是,我们
我正在使用 .NET 4.0 MemoryCache应用程序中的类并试图限制最大缓存大小,但在我的测试中,缓存似乎并没有真正遵守限制。 我正在使用设置,according to MSDN ,应该限制缓
我将 MemoryCache 与 Sql 依赖项一起使用。我注意到当使用 MemoryCache.Set() 时,如果集合中的某个项目被覆盖,则会发生内存泄漏。考虑以下场景: key=A 的项被插入到
我一直在阅读有关从 .Net Framework 4.0 开始的新 MemoryCache 类的所有地方。根据我的阅读,您可以跨不同的 .Net 应用程序访问 MemoryCache。我正在尝试在 A
我收到这条消息: System.ObjectDisposedException: Cannot access a disposed object. A common cause of this err
应用程序需要加载数据并缓存一段时间。我希望如果应用程序的多个部分想要同时访问同一个缓存键,缓存应该足够智能,只加载一次数据并将该调用的结果返回给所有调用者。然而, MemoryCache 不是这样做的
MemoryCache 是一个线程安全类,根据 this文章。但我不明白它在特定情况下会如何表现。例如我有代码: static private MemoryCache _cache = MemoryC
我不明白在 .NET 4.0 的 System.Runtime.Caching.MemoryCache 中滑动过期应该如何工作。 根据文档,过期时间跨度是“在从缓存中逐出缓存条目之前必须访问缓存条目的
在 .NET 4 MemoryCache 中,有没有办法找到上次访问项目的时间?我确定它在内部被跟踪,因为 CacheItemPolicy 具有 SlidingExpiration 属性。但是我找不到
我正在使用 .NET 4.0 MemoryCache类,我想以线程安全的方式添加或替换缓存中的现有项,但我还想知道我是否替换了现有项或添加了新项。 据我所知,Set方法旨在原子地替换缓存中的项目(如果
我是一名优秀的程序员,十分优秀!