1. memorycahe

netcore中的缓存和system.runtime.caching很相似,但是在功能上做了增强,缓存的key支持object类型;提供了泛型支持;可以读缓存和单个缓存项的大小做限定,可以设置缓存的压缩比例。

通过实现微软官方的microsoft.extensions.caching里面的idistributedcache接口实现缓存集成到aspnetcore中

1.1 简单入门

netcore中缓存相关的类库都在 microsoft.extensions.caching ,使用memorycache首先安装包

注入

使用

1.2 过期时间

在例子中key1,key2都是使用的绝对过期时间,key3使用的相对过期时间,2秒后第一次访问key1、key2、key3都没过期,其中key3的过期时间刷新了,重新设置为3秒后,所以再次暂停2秒后,key1、key2都过期了,key3仍然存在。

程序运行结果如下:

1.2 常用配置

下边的例子介绍netcore中缓存的常用配置,直接看代码

注意netcore中设置缓存和缓存项大小是没有单位的

缓存被清空的回调函数可以注册多个(system.runtime.caching清除缓存的回调只能是一个)。

程序执行结果

1.3 ichangetoken

上边我们已经简单了解了通过滑动过期时间和绝对过期时间来控制缓存的有效性,但是有时缓存的过期与否和时间没有联系,比如我们缓存一个文件的内容,不管缓存多久只要文件没有发生变化缓存都是有效的。在net framework中我们可以通过cachedependency来控制,在net core中怎么控制呢?net core中我们可以使用ichangetoken接口轻松实现缓存的过期策略。先看一下ichangetoken接口:

看一下ichangetoken实现缓存过期策略的两个例子

1.3.1 监控文件

需要安装组件:microsoft.extensions.fileproviders.physical

pollingfilechangetoken通过轮询来监控文件有没有发生变化,如果文件中的内容发生改变,缓存就会自动过期。

1.3.2 通过代码控制缓存过期

tokensource.cancel方法发送取消信号,这个方法会触发缓存过期,基于此我们可以通过cancel方法灵活的实现自定义的缓存策略。

程序执行结果如下:

1.4 引用nuget包

直接引用我自己简单封装的一个nuget包(简单封装自己用,不要嘲笑)

注入到容器

使用

以上就是详解.net缓存之memorycahe的详细内容,更多关于.net缓存之memorycahe的资料请关注www.887551.com其它相关文章!