はじめに
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 の Pub/Sub 機能を利用して実装されています。
例
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 エコシステムがますます良くなることを願っています!
