簡介
CacheManager 是用 C# 撰寫的 .NET 的開放原始碼快取抽象層。它支援各種快取提供者並實作了許多進階功能。
CacheManager 套件的主要目標是讓開發人員的生活更輕鬆處理,即使是非常複雜的快取場景。使用 CacheManager 可以實作多層快取,例如在分散式快取前的處理序內快取,只需幾行程式碼。
CacheManager 不僅僅是一個統一各種快取提供者的程式設計模型的介面,這將使以後在專案中變更快取策略變得非常容易。它還提供其他功能,例如快取同步、並行更新、序列化、事件、效能計數器……開發人員只有在需要時才可以選擇加入這些功能。
功能列表
- 一種處理不同快取技術的通用介面:
ICache - 可設定
- 支援不同的快取提供者
- 現在可以設定序列化。僅在分散式快取中才需要序列化。如果沒有安裝和設定額外的序列化套件,將使用二進位序列化
- 使用分散式快取的鎖或交易更新值。
- 記錄:
CacheManager帶有一個可擴充的記錄API - 型別快取介面。
- 多層:透過
CacheManager管理多個快取控制代碼,您可以輕鬆實作分層快取 - 快取區域:即使某些快取系統不支援或不實作快取區域,
CacheManager也會實作該機制。例如,這可用於對元素進行分組並一次刪除所有元素。 - 統計資訊:各種快取操作的計數器。
- 效能計數器:為了能夠檢查某些數字
perfmon,CacheManager支援每個管理員執行個體和每個快取控制代碼的效能計數器。 - 事件系統:
CacheManager觸發常見快取操作的事件:OnGet、OnAdd、OnPut、OnRemove、OnClear、OnClearRegion System.Web.OutputCache實作使用CacheManager作為OutputCache提供者,這使得OutputCache非常靈活,例如透過在許多 Web 伺服器上使用像 Redis 這樣的分散式快取。- 快取用戶端同步:使用 Redis 發佈/訂閱功能實作
範例
private static void MostSimpleCacheManager()
{
var config = new ConfigurationBuilder()
.WithSystemRuntimeCacheHandle()
.Build();
var cache = new BaseCacheManager<string>(config);
// or
var cache2 = CacheFactory.FromConfiguration<string>(config);
}
private static void EventsExample()
{
var cache = CacheFactory.Build<string>(s => s.WithDictionaryHandle());
cache.OnAdd += (sender, args) => Console.WriteLine("Added " + args.Key);
cache.OnGet += (sender, args) => Console.WriteLine("Got " + args.Key);
cache.OnRemove += (sender, args) => Console.WriteLine("Removed " + args.Key);
cache.Add("key", "value");
var val = cache.Get("key");
cache.Remove("key");
}
- GitHub 地址:https://github.com/MichaCo/CacheManager
最後大家如果喜歡我的文章,還麻煩給個關注並按個讚,希望 .NET 生態圈越來越好!
