AS.NET CoreでLazyCacheを使用する全プロセス


前言
マイクロソフトのASP.NET Coreは、非常に人気のある高性能を構築するために、Windows、Linux、MacOS上のWEBフレームをモジュール化して実行することができます。通常、プログラムを高性能に保つことができる効果的な方法は、熱チェーン上のデータをキャッシュすることによって高周波の要求に対応することです。
LazyCacheはメモリの使いやすさ、スレッドの安全に基づいたキャッシュコンポーネントであり、ここでのLazyはLazyCacheがキャッシュに命中していない時に一度以上のキャッシュ依頼関数をトリガしないことを指しています。この文章はどのようにASP.NET Core 5.0にLazyCacheを使うかを検討します。
LazyCacheをインストールします
ASP.NET Core MVC 5でLazyCacheを使用するには、次の2つのnugetパッケージをインストールする必要があります。
  • LazyCache
  • LazyCache.AspNetCore
  • Nugetでツールのインストールを可視化できます。または以下のコマンドでインストールできます。
    PM>Install-Package LazyCache
    PM>Install-Paackage LazyCache.AspNetCore
    なぜキャッシュしますか?
    キャッシュは状態管理戦略であり、ウェブアプリケーションでは、しばしばいくつかのデータをメモリにキャッシュするために使用され、後続の要求を多重化するために使用される。これにより、ハードディスクでデータを取りに行かなければならないという気まずさを回避し、明らかにキャッシュはウェブプログラムの性能を向上させる大きな利器である。
    ASP.NET Coreは内蔵のCacheが不足していますが、3種類のキャッシュタイプに対するサポートを提供しています。メモリキャッシュ、分散キャッシュ、応答キャッシュ。
    どうしてLazyCacheを使いますか?
    LazyCacheはオープンソースであり、簡単で、スレッドが安全であり、拡張可能なキャッシュコンポーネントであり、下層部では、LazyCacheはMicrosoft.Extensions.C.aching下のMemoryCacheを使用しています。
    データベースから取得したデータをキャッシュしたいならば、複雑なオブジェクト図とウェブサービスの呼び出しは、LazyCacheを使うのが非常に良い選択です。通常はデフォルトキャッシュの時間は20 minです。
    次に簡単にLazyCacheの特徴を並べました。
  • 拡張可能性
  • オープンソース
  • 友好的なAPIインターフェース
  • 内蔵lazyロック
  • 下層部は、メモリCache
  • を使用する。
    LazyCacheの設定
    LazyCacheを配置するには、ConfigreServices()の方法でAddLazyCache()を呼び出してLazyCacheをServiceContinerに注入しても良いです。コードで示しています。
    
      public void ConfigureServices(IServiceCollection services)
      {
       services.AddLazyCache();
       services.AddControllers();
      }
    
    このように、LazyCacheがあなたのアプリケーションを通して実行できることを確認できます。LazyCacheにアクセスするにはIAppCacheインターフェースを通じて、下記のように定義されています。
    
     public interface IAppCache
     {
      ICacheProvider CacheProvider { get; }
      CacheDefaults DefaultCachePolicy { get; }
    
      void Add<T>(string key, T item, MemoryCacheEntryOptions policy);
      T Get<T>(string key);
      Task<T> GetAsync<T>(string key);
      T GetOrAdd<T>(string key, Func<ICacheEntry, T> addItemFactory);
      T GetOrAdd<T>(string key, Func<ICacheEntry, T> addItemFactory, MemoryCacheEntryOptions policy);
      Task<T> GetOrAddAsync<T>(string key, Func<ICacheEntry, Task<T>> addItemFactory);
      Task<T> GetOrAddAsync<T>(string key, Func<ICacheEntry, Task<T>> addItemFactory, MemoryCacheEntryOptions policy);
      void Remove(string key);
      bool TryGetValue<T>(string key, out object value);
     }
    
    
    IAppCacheをControllerに注入する
    すべての配置が整ったら、IAppCacheを構造関数で注入する方式でControllerに入れることができます。下記のコードの通りです。
    
     [ApiController]
     [Route("[controller]")]
     public class WeatherForecastController : ControllerBase
     {
      private readonly IAppCache _lazyCache;
    
      public WeatherForecastController(IAppCache cache)
      {
       this._lazyCache = cache;
      }
     }
    
    

    LazyCacheによってデータが追加されました。
    以下のようにリストに戻るGetData()法を考察する。
    
    private async Task<List<string>> GetData()
    {
     return new List<string>()
     {
      "Joydip Kanjilal",
      "Steve Smith",
      "Rick Smith"
     };
    }
    
    次に、GetOrAdd Aync方法によってキャッシュからデータを取得または追加します。以下のコードで示します。
    
     [ApiController]
     [Route("[controller]")]
     public class WeatherForecastController : ControllerBase
     {
      private readonly IAppCache _lazyCache;
    
      public WeatherForecastController(IAppCache cache)
      {
       this._lazyCache = cache;
      }
    
      [HttpGet]
      public async Task<IEnumerable<string>> Get()
      {
       var data = await _lazyCache.GetOrAddAsync("Authors", GetData, DateTimeOffset.Now.AddMinutes(30));
    
       return data;
      }
    
      private async Task<List<string>> GetData()
      {
       return new List<string>()
         {
          "Joydip Kanjilal",
          "Steve Smith",
          "Rick Smith"
         };
      }
     }
    
    

    メモリにもっと多くのデータを保存したいなら、あるいはもっとランクの高いキャッシュサービスを利用したいなら、Redisを分散キャッシュとして使用することを勧めます。🐂👃の場所はいつもIAppCacheを使用しています。これはRedisを使って下のデフォルトのMemoryCacheを簡単に置き換えることができるという意味です。
    訳文のリンク:https://www.infoworld.com/article/3608568/how-to-use-lazycache-in-aspnet-core-mvc-5.html
    締め括りをつける
    ここではASP.NET CoreでLazyCacheを使った文章を紹介します。ASP.NET CoreではLazyCacheを使っています。以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。