1. ホーム
  2. c#

[解決済み] asp.netでキャッシュをロックする最良の方法は何ですか?

2023-07-17 04:08:28

質問

長い間実行されているプロセスなどの特定の状況では、そのリソースに対する別のユーザーによる後続の要求が、キャッシュを叩く代わりに長いプロセスを再度実行することを避けるために、ASP.NET キャッシュをロックすることが重要であることは知っています。

ASP.NETでキャッシュロックを実装するために、c#で最良の方法は何ですか?

どのように解決するのですか?

基本的なパターンを紹介します。

  • 値のキャッシュをチェックし、利用可能であれば返す
  • 値がキャッシュにない場合、ロックを実装します。
  • ロックの内部で、もう一度キャッシュを確認すると、ブロックされている可能性があります。
  • 値のルックアップを実行し、それをキャッシュします。
  • ロックを解除する

コードではこのようになります。

private static object ThisLock = new object();

public string GetFoo()
{

  // try to pull from cache here

  lock (ThisLock)
  {
    // cache was empty before we got the lock, check again inside the lock

    // cache is still empty, so retreive the value here

    // store the value in the cache here
  }

  // return the cached value here

}