CacheManager - C#で書かれた.NETのオープンソースキャッシュ抽象化レイヤー

CacheManager - C#で書かれた.NETのオープンソースキャッシュ抽象化レイヤー

CacheManagerは、C#で書かれた.NETのオープンソースキャッシュ抽象化レイヤーです。さまざまなキャッシュプロバイダーをサポートし、多くの高度な機能を実装しています。

最終更新 2022/07/08 7:03
黑哥聊dotNet
読了目安 2 分
カテゴリ
.NET
タグ
.NET C# オープンソース

はじめに

CacheManager は C# で書かれた .NET 向けのオープンソースのキャッシュ抽象化レイヤーです。さまざまなキャッシュプロバイダーをサポートし、多数の高度な機能を実装しています。

CacheManager パッケージの主な目的は、非常に複雑なキャッシュシナリオであっても、開発者の作業を容易にすることです。CacheManager を使用すると、数行のコードで、分散キャッシュの前段にインメモリキャッシュを置くような多層キャッシュを実現できます。

CacheManager は、単にさまざまなキャッシュプロバイダーのプログラミングモデルを統一するインターフェースを提供するだけではありません。それにより、後日プロジェクトでキャッシュ戦略を変更するのが非常に簡単になります。さらに、キャッシュ同期、同時更新、シリアライゼーション、イベント、パフォーマンスカウンターなどの追加機能も提供します。開発者は必要に応じてこれらの機能を選択的に利用できます。

機能一覧

  • 異なるキャッシュ技術を扱うための共通インターフェース: ICache
  • 設定可能
  • さまざまなキャッシュプロバイダーをサポート
  • シリアライゼーションが設定可能になりました。シリアライゼーションは分散キャッシュでのみ必要です。追加のシリアライゼーションパッケージをインストールおよび設定しない場合は、バイナリシリアライゼーションが使用されます
  • 分散キャッシュのロックやトランザクションを使用した値の更新。
  • ロギング: CacheManager には拡張可能なロギング API が付属しています
  • 型付きキャッシュインターフェース。
  • 多層: CacheManager で複数のキャッシュハンドルを管理することで、階層型キャッシュを簡単に実現できます
  • キャッシュリージョン: 一部のキャッシュシステムがキャッシュリージョンをサポートしていない、または実装していない場合でも、CacheManager はそのメカニズムを実装します。これにより、例えば要素をグループ化して一度にすべて削除することができます。
  • 統計: さまざまなキャッシュ操作のカウンター。
  • パフォーマンスカウンター: 特定の数値を perfmon で確認できるようにするため、CacheManager はマネージャーインスタンスごとおよびキャッシュハンドルごとのパフォーマンスカウンターをサポートしています。
  • イベントシステム: CacheManager は一般的なキャッシュ操作(OnGetOnAddOnPutOnRemoveOnClearOnClearRegion)のイベントを発生させます。
  • System.Web.OutputCache 実装: CacheManagerOutputCache プロバイダーとして使用することで、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");
}

最後に、もし私の記事を気に入っていただけましたら、フォローといいねをよろしくお願いします。.NET エコシステムがますます良くなることを願っています!

さらに探索

関連読書

その他の記事
同じカテゴリ / 同じタグ 2026/04/22

各OSバージョンの.NETサポート状況(250707更新)

仮想マシンとテストマシンを使用して、各OSバージョンの.NETサポート状況を確認します。OSインストール後、対応するランタイムをインストールし、Stardustエージェントを実行できることを確認します(合格条件)。

続きを読む
同じカテゴリ / 同じタグ 2026/02/07

AOTの使用経験のまとめ

プロジェクト作成当初から、新機能を追加したり新しい構文を使用したりした場合には、すぐにAOT公開テストを実施するという良い習慣を身につけるべきです。

続きを読む