1. 程式人生 > >.NET Core 新一代快取

.NET Core 新一代快取

快取容量

//設定cache的最大限制是:100
MemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions()
{
SizeLimit = 100,
});

總快取設定大小      沒有單位,只是個數

他的每一個快取還可以設定大小。

 

快取過期回撥

 設定每一個快取專案的回撥函式。

過期分為 被動過期,和主動過期 ,滑動過期。。

MemoryCacheEntryOptions cacheOptin = new MemoryCacheEntryOptions()
{
    
//被動過期 這種情況只有當再去查詢這個快取的時候,才會出發他的回撥函式。不是實時的 AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(10) }; cacheOptin.Size = 1; cacheOptin.RegisterPostEvictionCallback((k, v, r, s) => { Console.WriteLine(k + ":guoqi "); }); memoryCache.Set<string>("nihao", "value", cacheOptin);

 

 

//主動過期,程式控制過期
//主動過期  tokenSource.Cancel();也會出發回調函式
CancellationTokenSource tokenSource = new CancellationTokenSource();
cacheOptin.AddExpirationToken(new CancellationChangeToken(tokenSource.Token));
memoryCache.Set<string>("nihao1", "value1", cacheOptin);
Console.WriteLine(memoryCache.Get<string
>("nihao")); Console.WriteLine(memoryCache.Get<string>("nihao1")); tokenSource.Cancel(); //tokenSource.CancelAfter(1000 * 2);

 

 

 

 

原子性操作

memoryCache.GetOrCreate<string>("1", t => "1");

快取優先順序

cacheOptin.Priority = CacheItemPriority.High;
cacheOptin.SetPriority(CacheItemPriority.High);

設定單個快取的優先順序

 

快取壓縮

 

//壓縮20%。剩餘80% 。移除的時候,根據過期時間 優先順序等操作
memoryCache.Compact(0.2);

 

程式碼下載