2011-09-08 1 views
12

Memcachedを使用している開発チームのメンバーが、組み込みの.NET Framework Cacheシステムの代わりにデータベース結果をキャッシュすることがありました。なぜ私はこれらの特定のキャッシュを使用するのか分かりません。Memcachedと.NET Cacheシステムの利点は何ですか?

多分、パフォーマンスが優れています。

とにかく、Memcached(およびネイティブ.NETキャッシュではない)を使用することの本当の利点はありますか?

+0

私はmemcachedまたはAppFabricの両方で、高可用性とフォールトトレランスのためのクラスタリングをサポートしています。 –

答えて

23

Memcachedが分散しているということは、キャッシュにアクセスするサーバーのクラスタがある場合、すべてが本質的に同じキャッシュから読み書きされていることを意味します。内蔵の.Netキャッシュにはこの機能がありません(少なくとも私はASP.Netは知っていません)。

各マシンは、独自の独立したキャッシュを持っているように、これは、その(例えば)を意味:マシンAが計算した場合/値を読み出して、キャッシュにそれを置く、機械Bから任意の利益を得るない

  • この。各マシンは、独立して独自のキャッシュを維持し、満たす必要があります。同じエントリが多くの異なるマシンのキャッシュに存在する可能性があるため、スペースを浪費する可能性もあります。
  • マシンBは、キャッシュエントリを無効にした場合、マシンAは、この無効化を認識しませんし、日付データのうち、/古い使用し続けることができ

Memcachedのは、これらの問題のどちらを持っている - エントリが配置されると、キャッシュ内のすべてのマシンは同じキャッシュされたアイテムを取得できます。キャッシュ内のエントリを無効にすると、すべてのユーザーに対して無効になります。

デメリット

アプリケーションがマシンのクラスタ上で機能するために必要な場合、あなたのアプリケーションにのみ、あなたの単一マシン上で実行する必要があれば、あなたは分散キャッシュの恩恵を受ける可能性が非常に高いです分散キャッシュを使用することによるメリットはありません。おそらく組み込みの.Netキャッシュを使用するほうが良いでしょう。

  • memcachedキャッシュにアクセスするには、プロセス間/ネットワーク通信が必要です。これは処理中の.Netキャッシュよりもパフォーマンスが低下します。
  • Memcachedは外部プロセス/サービスとして動作します。つまり、そのサービスを運用環境にインストール/実行する必要があります。やはり.Netキャッシュは、インプロセスでホストされているので、このステップを必要としません。
+0

"memcachedキャッシュにアクセスするには、プロセス間/ネットワーク通信が必要です。処理中の.Netキャッシュよりもパフォーマンスが低下します。誰かがベンチマークしたプロセスとmemcachedを同じAWAリージョン/同じラックに配置していますか? In-ProcessとMemcacheの比較に興味がありますか?データベース。 – dazbradbury

2

Memcachedの比較が実際にはAzure App Fabric Cachingで、.NET 4とAzureで追加されました。クラスタ化されたクラウドコンピューティング向けの分散クラスタ対応キャッシュソリューションです。しかし、Memcachedも長い間(2003年のことだと思います)、これは十分に確立されており、他の人が評価されるベンチマークとみなされています。 Memcachedは、そこにあるすべての言語に移植されており、LinuxまたはWindowsサーバ上で実行できます。 Azureのキャッシュはまだ比較的新しいので、実際に多くの人が実際に使用しているわけではありません。

+1

Azure App Fabricキャッシュリンクが機能していません –

関連する問題