亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

.NET Core系列之MemoryCache 初識

 更新時間:2018年08月13日 15:08:38   作者:KAnts  
Cache是一個絕大多數(shù)項目會用到的一個技術(shù),這篇文章主要介紹了.NET Core系列之MemoryCache 初識,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

Cache是一個絕大多數(shù)項目會用到的一個技術(shù),說起到緩存可能就聯(lián)想到 Set、Add、Get、Remove、Clear 這幾個方法。那么在.NET Core中微軟給我們帶來了什么樣的緩存體驗?zāi)??今天我們就來介紹下”Microsoft.Extensions.Caching.Memory”。由于這個包名稱過長,下文使用MSCache來代替。

MSCache能做什么?

  1. 絕對過期支持
  2. 滑動過期支持(指定一個時間,TimeSpan,指定時間內(nèi)有被Get緩存時間則順延,否則過期)
  3. 過期回調(diào)
  4. 自定義過期

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

從IMemoryCache說起

IMemoryCache 就提供了三個方法并實現(xiàn)了 IDisposable 接口。

很好理解

CreateEntry 添加一個緩存

Remove 刪除一個緩存

TryGetValue 獲取一個緩存(并可得到具體的緩存是否存在)

ICacheEntry

ICacheEntry 有以上成員,同時實現(xiàn)了 IDisposable 接口,為什么要實現(xiàn)這個接口?用來釋放緩存嗎?這個在接下來的篇幅會做解釋。

Key 緩存key

Value 緩存值

AbsoluteExpiration 絕對過期時間,為null則條件無效

AbsoluteExpirationRelativeToNow 相對當(dāng)前時間的絕對過期時間(使用TimeSpan),為null條件無效

SlidingExpiration 滑動過期時間

ExpirationTokens 提供用來自定義緩存過期

PostEvictionCallbacks 緩存失效回調(diào)

Priority 緩存項優(yōu)先級(在緩存滿載的時候絕對清除的順序)

Size 代表緩存數(shù)據(jù)的大小,在內(nèi)存緩存中一般為null

我們來試試

恩,妥妥的,輸出 “True” 和 “1”。

納尼,居然是“False”和null。

玄學(xué)

有些同學(xué)可能已經(jīng)注意到了 ICacheEntry 實現(xiàn)了IDisposable接口。為什么ICacheEntry要實現(xiàn) IDisposable 接口呢?講真我也不知道。反正大家知道它是具體像MemoryCache插入緩存的方法就行。

這有點違背了我們之前所學(xué)的 IDisposable 用來釋放資源的原則。

正確的打開方式

開發(fā)者的體驗

說到底還不是 Set、Add、Get、Remove、Clear ?跟之前差不多啊。

MS團(tuán)隊提供了一個 CacheExtensions 擴(kuò)展方法類

Get 比較好理解這邊不多做累述。

Set 設(shè)置一個新的緩存條目(相同key的會被移除)就好像被set的這個key是一個完全新的東西,所以也不會繼承之前的過期時間和過期token。

GetOrCreate

基本都用它,我們來看看。

兩種方式 GetOrCreate 減少了第一種模式的判斷?;卣{(diào)里面的entry就是ICacheEntry可以用來設(shè)置緩存的其它選項。

同時在這個Task滿天飛的日子里,還提供了了 GetOrCreateAsync 擴(kuò)展方法。

寫在最后

MSCache跟Orchard中的Caching非常的相識,或者說借鑒了Orchard中良好的Caching重構(gòu)而來。

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

.NET技術(shù)棧QQ群:384413261(點擊加入 .NET Group)

相關(guān)文章

最新評論