.NET Core 新一代快取
阿新 • • 發佈:2018-12-21
快取容量
//設定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);