详解.Net缓存之MemoryCahe
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的资料请关注其它相关文章!
推荐阅读
-
实例详解Spring Boot实战之Redis缓存登录验证码
-
实例详解Spring Boot实战之Redis缓存登录验证码
-
在ASP.NET 2.0中操作数据之五十九:使用SQL缓存依赖项SqlCacheDependency
-
详解免费高效实用的.NET操作Excel组件NPOI(.NET组件介绍之六)
-
详解vue之页面缓存问题(基于2.0)
-
详解.Net缓存之MemoryCahe
-
ASP.Net之Datalist详解【删除(源码)】
-
.NET Core系列之MemoryCache 缓存域
-
.NET Core系列之MemoryCache 缓存过期
-
ASP.NET Core扩展库之Http日志的使用详解