5

この質問:

複数の Web サーバー間で HttpRuntime.Cache を共有することは可能ですか?

.. http://msdn.microsoft.com/en-us/library/system.web.caching.aspxに関連

..私は答えを知っていると思いますが、すべての人の利益のために、新しいものを使用します:

http://msdn.microsoft.com/en-us/library/system.runtime.caching.aspx

現実的に可能ですか?または、memcached / AppFabric / redis / xyz を使用したほうがよいでしょうか。

4

2 に答える 2

8

HttpRuntime.Cache はインプロセス (つまり、サーバー メモリ内) で実行され、複数の Web サーバー間で共有することはできません。上記の System.Runtime.Caching をカスタム プロバイダーで拡張して、SQL Server や専用サーバーなどのプラットフォームを使用してキャッシュを集中化できます。

推奨されるマルチ Web サーバーのキャッシュ戦略は、環境によって異なります。

スケールの下限では、SQL Server を使用するのは、おそらく .NET 開発者にはなじみのある簡単なオプションです。もう 1 つのオプションは、Web サービス (WCF など) を使用して、キャッシュされたデータ呼び出しを集中化することです。

ハイエンドでは、memcached、AppFabric、Redis など、この分野のリーダーについて言及されました。これらが環境に既にセットアップされている場合、および/またはそれらに精通している場合は、複数の Web サーバーがある場合は常にそれらを使用することがわかります。 (大なり小なり)。

少なくとも Redis をチェックすることをお勧めします。言及されたグループの新しいカテゴリですが、軽量で高速であり、キー/値ストアに加えて、pub/sub などの分散システムに最適な他の機能を備えています。

于 2012-12-11T07:45:19.677 に答える
0

.Net の System.Runtime.Caching API は、オブジェクト キャッシュにアクセスするための基本メソッドとプロパティを提供する抽象クラスObjectCacheを提供します。.Net で提供されるこの抽象クラスの唯一の実装は、インプロセス キャッシュであり、複数の Web サーバー間で共有できないMemoryCacheです。

ただし、ObjectCache クラスを自分で拡張して、分散キャッシュの機能を組み込むことができます。

または、すぐに使用できるソリューションとして、分散キャッシング用の ObjectCache の実装を提供する分散キャッシング ソリューションを使用できます。 NCacheは、こちらで説明されているように、ObjectCache 実装を提供する分散キャッシング ソリューションの 1 つです。

NCache は、.NET 4.0 キャッシュのプロバイダーを開発しました。これにより、非常に高速でスケーラブルな .NET 分散キャッシュが実現します。これにより、.NET 4.0 キャッシュを使用するアプリケーションをマルチサーバー環境に拡張できるようになり、データベースのボトルネックも解消されます。アプリケーションのコードを変更することなく、NCache を .NET 分散キャッシュとして組み込むことができます。NCache を使用するように構成ファイルを変更するだけです。

于 2014-12-28T10:47:37.893 に答える