一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - ASP.NET教程 - .NET Core系列之MemoryCache 緩存域

.NET Core系列之MemoryCache 緩存域

2020-06-01 14:24KAnts ASP.NET教程

這篇文章主要介紹了.NET Core系列之MemoryCache 緩存域,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

在上一篇“《擁抱.NET Core系列:MemoryCache 緩存選項(xiàng)》”我們介紹了一些 MSCache 的機(jī)制,今天我們來(lái)介紹一下 MSCache 中的緩存域。

MSCache項(xiàng)目

 

MSCache 目前最新的正式版是 2.0.0,預(yù)覽版是2.1.0,會(huì)與 .NETCore 2.1 一起發(fā)布。本篇用了2.0.0版本

開(kāi)源在 GitHub 上,倉(cāng)庫(kù)地址是:https://github.com/aspnet/Caching

NuGet地址為:https://www.nuget.org/packages/Microsoft.Extensions.Caching.Memory/2.0.0

緩存域

 

我們來(lái)假設(shè)一個(gè)場(chǎng)景。

有下面四個(gè)成員

  1. 書(shū)籍模型(包含一個(gè)組章節(jié)模型)
  2. 章節(jié)模型
  3. 書(shū)籍服務(wù)
  4. 章節(jié)服務(wù)

.NET Core系列之MemoryCache 緩存域

BookService 有一個(gè)獲取書(shū)籍的方法

ChapterService 有一個(gè)獲取書(shū)籍章節(jié)的方法

.NET Core系列之MemoryCache 緩存域

.NET Core系列之MemoryCache 緩存域

可以看到 GetBook 內(nèi)使用了緩存,緩存了5秒鐘。GetBook 又調(diào)用了 ChapterService 的 GetChapters,GetChapters 緩存了3秒鐘。

這時(shí)候書(shū)籍的章節(jié)信息緩存要早于書(shū)籍過(guò)期。

那么大家試想一下,如果章節(jié)信息先過(guò)期了 GetBook 這個(gè)方法返回的是不是還是舊的數(shù)據(jù)?

在一些簡(jiǎn)單的緩存設(shè)計(jì)中是這樣的,但在 MSCache 中微軟提供了緩存域的概念,從層級(jí)上 Chapter 的父級(jí)緩存是 Book。所以當(dāng) Chapter 過(guò)期時(shí),Book 也會(huì)級(jí)聯(lián)過(guò)期。

我們來(lái)看一下測(cè)試。

.NET Core系列之MemoryCache 緩存域

.NET Core系列之MemoryCache 緩存域

可以看到,每隔三秒鐘不僅 Chapter 重新獲取,Book 也會(huì)一起級(jí)聯(lián)獲取。

這樣在很大程度上減輕了我們處理緩存依賴的問(wèn)題。

ChaneToken在域中

.NET Core系列之MemoryCache 緩存域

.NET Core系列之MemoryCache 緩存域

SlidingExpiration在域中(畫(huà)重點(diǎn))

.NET Core系列之MemoryCache 緩存域

恩,輸出是 時(shí)間,時(shí)間,新時(shí)間。

其實(shí)呢?

.NET Core系列之MemoryCache 緩存域

子緩存項(xiàng)并沒(méi)有過(guò)期。

這是為什么呢?我翻了 Caching 的源碼發(fā)現(xiàn),緩存失效擴(kuò)散的處理中,并沒(méi)有對(duì) SlidingExpiration 進(jìn)行處理,只處理了 ExpirationTokens 和 AbsoluteExpiration。

不知道這是不是一個(gè)bug,我已經(jīng)在 MSCache 項(xiàng)目上提了一個(gè)issue,等待回復(fù)后再來(lái)更新這塊的說(shuō)明。

這塊的處理代碼如下:

.NET Core系列之MemoryCache 緩存域

邏輯很簡(jiǎn)單,把自身的過(guò)期 token 和 絕對(duì)過(guò)期時(shí)間 設(shè)置在父緩存項(xiàng)上。

也就是說(shuō)你在父緩存中設(shè)計(jì)的絕對(duì)到期時(shí)間會(huì)被改寫(xiě)成到期緩存域中最小的到期時(shí)間。

寫(xiě)在最后

 

MSCache 真的非常像 Orchard 中的 Caching,有興趣的同學(xué)可以去了解一些 Orchard 中的 Caching 設(shè)計(jì)。

至 此 MSCache 中的 MemoryCache 機(jī)制和功能就基本介紹完了。

后續(xù)會(huì)繼續(xù)介紹 MSCache 中的 DistributedCache(分布式緩存),和一些 MSCache 的使用技巧。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://www.cnblogs.com/ants/p/8533074.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品麻豆国产 | 四虎国产成人免费观看 | videos欧美肥婆 | 精品午夜寂寞黄网站在线 | 国产亚洲精品看片在线观看 | 免费免费啪视频在线观播放 | yin乱被cao系列 | 国产区小视频 | 草草精品视频 | 欧美bbxx| 成年人在线播放视频 | 天天爱天天做天天爽天天躁 | 日韩高清一区二区三区不卡 | 国产精品1 | 精品性影院一区二区三区内射 | 男人影院在线观看 | 色小孩导航 | 麻豆网站视频国产在线观看 | 三级网站午夜三级 | 99视频久久 | 美女被视频网站看免费入口 | 亚洲精品在线免费看 | 国产精品九九免费视频 | 亚洲国产精品嫩草影院永久 | 石原莉奈adn093店长未婚妻 | 日本在线精品视频 | 91精品国产亚一区二区三区 | 久草色视频 | 嫩草影院永久在线一二三四 | 接吻吃胸摸下面啪啪教程 | 福利视频一区二区三区 | 公园吃女人奶野战视频 | 欧美一级一级做性视频 | 日韩一区二区三 | 日韩欧美推理片免费在线播放 | 亚洲一区二区三区91 | 免费网址在线观看入口推荐 | 校园高h | 免费一级欧美片在线观看 | 久久内在线视频精品mp4 | 亚洲国产欧美在线人成 |