国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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

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

.NET Core系列之MemoryCache 緩存選項

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

這篇文章主要介紹了.NET Core系列之MemoryCache 緩存選項,詳細的介紹一下 MSCache 中的 Options,由此來介紹一些 MSCache 中的內(nèi)部機制,感興趣的小伙伴們可以參考一下

在上一篇 ”擁抱.NET Core系列:MemoryCache 緩存過期” 中我們詳細的了解了緩存過期相關(guān)的內(nèi)容,今天我們來介紹一下 MSCache 中的 Options,由此來介紹一些 MSCache 中的內(nèi)部機制。

MSCache項目

 

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

開源在 GitHub 上,倉庫地址是:https://github.com/aspnet/Caching

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

MemoryCacheOptions

 

.NET Core系列之MemoryCache 緩存選項

Clock 顧名思義,是用來提供時間的一個成員,緩存里面大量用到了時間來判斷緩存是否過期。

CompactOnMemoryPressure 已經(jīng)被廢棄,可以不用管

ExpirationScanFrequency 過期掃描頻率(默認為1分鐘,可以理解為每過多久移除一次過期的緩存項)

SizeLimit 緩存大小限制(這屬于一個說明性屬性,而且單位也不是緩存數(shù)目,而是緩存真正占用的空間大小)

CompactionPercentage 壓縮率(默認0.05,百分比)

Clock

初次見到的時候以為是用來自定義 LocalTime,其實不是(當然要這么做也可以),在 MSCache 中只允許用 Utc 時間,但是為什么既然都是 Utc 時間還要留這個擴展選項呢?

很簡單,默認的當前時間是當前系統(tǒng)的當前時間,在一些對時間精度要求比較高的情況下就可以重寫 Clock 來實現(xiàn)自己自定義的獲取當前時間的邏輯。

ExpirationScanFrequency

 

緩存無非是一個字典表,當一些緩存項過期失效時候我們需要移除字典表里面的內(nèi)容。

然而準確的做到每個緩沖項過期就進行移除是非常損失性能的(類似GC),所以 MSCache 提供了一個屬性來設(shè)置,沒間隔多久才進行一次過期緩存移除。

這個值默認為1分鐘。

什么時候會進行過期緩存清理?

  • 添加新的
  • 獲取緩存項
  • 刪除緩存項目
  • 當有緩存項過期(通過過期回調(diào))

這邊就解釋了上一節(jié)的最后為什么沒有回調(diào)輸出。

因為MSCache里面沒有使用定時器來進行過期掃描。

ps:緩存過期清理是一個異步方法也就是不會堵塞當前線程。

SizeLimit

 

這個屬性在 MemoryCache 中幾乎沒有用,在 MemoryCache 中關(guān)于緩存項的大小默認都是null或0。

因為這個屬性并不是緩存項的數(shù)量,而是緩存真正占用的空間大小,如這個緩存項占用了多少內(nèi)存。

然而在.NET中計算一個對象所占用的內(nèi)存是很難且損耗性能的,所以在 MemoryCache 中這個屬性幾乎可以看做沒有。

當然你可以通過手動設(shè)置緩存項的Size來啟用相關(guān)功能。這邊我們只簡單說明,詳細講解會在后面的分布式緩存中進行說明。

這個屬性的作用是:當所有緩存大小超過這個值的時候進行一次緩存壓縮。

CompactionPercentage

 

當內(nèi)存大小超過 SizeLimit 時候進行壓縮的比率,默認值是0.05,也就是百分之5。

具體的計算方式是

得到剩余的緩存大小 SizeLimit * 1 – CompactionPercentage

得到需要壓縮的大小 CurrentSize – (SizeLimit * 1 – CompactionPercentage)

緩存的清理優(yōu)先級

.NET Core系列之MemoryCache 緩存選項

這時候就牽扯到 CacheEntry 中的 Priority 屬性了,當發(fā)生這種情況的時候 MSCache 會按以下優(yōu)先級進行壓縮處理

  • Low
  • Normal
  • High

為什么沒有 NeverRemove ?因為 NeverRemove 永遠不會在超過 SizeLimt 時候進行清理。

那么當緩存大小超過SizeLimit時,MSCache會

先清理Low優(yōu)先級的緩存項(不管是否過期)

再清理Normal優(yōu)先級的緩存項(不管是否過期)

繼續(xù)清理High優(yōu)先級的緩存項(不管是否過期)

CacheEntry 默認的 優(yōu)先級為:Normal。

寫在最后

 

今天介紹了一些 MSCache 的內(nèi)部機制,后續(xù)會講一下 緩存域 和 一些小技巧。

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品1区| 日韩综合一区 | 98成人网| 亚洲欧美综合 | 欧美在线视频网站 | 国产精品污www在线观看 | 亚洲综合激情 | 日韩欧美大片在线观看 | 亚洲精品乱码久久久久久蜜桃麻豆 | 亚洲福利在线观看 | 国产在线精品一区 | 美日韩成人 | 亚洲成av人影片在线观看 | 日韩欧美精品在线 | 午夜视频网站 | 久久精品亚洲国产 | 一级黄色毛片 | 亚洲精品一区二区三区蜜桃久 | 久久久www成人免费无遮挡大片 | 九九热视频在线 | 黄色免费观看 | 国产区在线 | 精品综合久久久 | 国产精品福利在线观看 | 精品久久久久国产 | 一 级 黄 色 片免费网站 | 欧美日韩精品免费 | 国产一区久久久 | 伊人激情 | av网站在线免费观看 | 成人欧美一区二区三区视频xxx | 九九热1| 骚虎av| 伊人亚洲 | 精品国产一区二区三区在线观看 | 精品久久久网站 | 91.成人天堂一区 | 久久精国产 | 黄色免费成人 | 久久综合亚洲 | 99热视|