• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > .NET Core系列之MemoryCache 缓存域

.NET Core系列之MemoryCache 缓存域

作者:KAnts 字体:[增加 减小] 来源:互联网 时间:2018-08-20

KAnts 通过本文主要向大家介绍了MemoryCache,缓存域,MemoryCache,缓存,.NET,Core,MemoryCache等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在上一篇“《拥抱.NET Core系列:MemoryCache 缓存选项》”我们介绍了一些 MSCache 的机制,今天我们来介绍一下 MSCache 中的缓存域。

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

缓存域

我们来假设一个场景。

有下面四个成员

  1. 书籍模型(包含一个组章节模型)
  2. 章节模型
  3. 书籍服务
  4. 章节服务

BookService 有一个获取书籍的方法

ChapterService 有一个获取书籍章节的方法

可以看到 GetBook 内使用了缓存,缓存了5秒钟。GetBook 又调用了 ChapterService 的 GetChapters,GetChapters 缓存了3秒钟。

这时候书籍的章节信息缓存要早于书籍过期。

那么大家试想一下,如果章节信息先过期了 GetBook 这个方法返回的是不是还是旧的数据?

在一些简单的缓存设计中是这样的,但在 MSCache 中微软提供了缓存域的概念,从层级上 Chapter 的父级缓存是 Book。所以当 Chapter 过期时,Book 也会级联过期。

我们来看一下测试。

可以看到,每隔三秒钟不仅 Chapter 重新获取,Book 也会一起级联获取。

这样在很大程度上减轻了我们处理缓存依赖的问题。

ChaneToken在域中

SlidingExpiration在域中(画重点)

恩,输出是 时间,时间,新时间。

其实呢?

子缓存项并没有过期。

这是为什么呢?我翻了 Caching 的源码发现,缓存失效扩散的处理中,并没有对 SlidingExpiration 进行处理,只处理了 ExpirationTokens 和 AbsoluteExpiration。

不知道这是不是一个bug,我已经在 MSCache 项目上提了一个issue,等待回复后再来更新这块的说明。

这块的处理代码如下:

逻辑很简单,把自身的过期 token 和 绝对过期时间 设置在父缓存项上。

也就是说你在父缓存中设计的绝对到期时间会被改写成到期缓存域中最小的到期时间。

写在最后

MSCache 真的非常像 Orchard 中的 Caching,有兴趣的同学可以去了解一些 Orchard 中的 Caching 设计。

至 此 MSCache 中的 MemoryCache 机制和功能就基本介绍完了。

后续会继续介绍 MSCache 中的 DistributedCache(分布式缓存),和一些 MSCache 的使用技巧。

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

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • .NET Core系列之MemoryCache 缓存域
  • .NET Core系列之MemoryCache 缓存选项
  • .NET Core系列之MemoryCache 缓存过期
  • .NET Core系列之MemoryCache 初识
  • .NET Core 2.0迁移小技巧之MemoryCache问题修复解决的方法

相关文章

  • 2017-05-11在asp.NET 中使用SMTP发送邮件的实现代码
  • 2017-05-11Asp.net防止盗链的实现原理分析
  • 2017-05-11Asp.Net 网站优化系列之数据库优化分字诀上 分库
  • 2017-05-11asp.net 实现动态显示当前时间(不用javascript不考虑开销)
  • 2017-05-11详解VS2017 Linux 上.NET Core调试
  • 2017-05-11ASP.NET中 script runat server 的用法
  • 2017-05-11asp.net 光棒效应实现代码
  • 2017-05-11解析在.net中使用XSLT转换xml文档的示例详解
  • 2017-05-11ASP.NE网站发布注意事项简析
  • 2017-05-11收藏的asp.net文件上传类源码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • vs2008最近打开的项目清除方法
    • 获取当前url
    • asp.net sql存储过程
    • Asp.net中判断一个session是否合法的方法
    • 微信公众平台开发之获得ACCESSTOKEN .Net代码解析
    • 在ASP.NET 2.0中操作数据之三:创建母版页和站点导航
    • asp.Net JS取母板页控件值的简单方法
    • .NET适配器模式讲解
    • MVC 5 第二章 MVC5应用程序项目结构
    • .Net 下区别使用 ByRef/ByVal 的重要性 分享

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有