Windowsおよび.NETでMemcached


83

Windows環境で本番環境で使用するためにmemcachedをすでに実装している人はいますか?私が読んだことを多くのブログなので、例えば、特に生産使用のWindowsでmemcachedを実行することをお勧めしていない窓にmemcachedを稼働します

そしてもう1つ、c#と.net 3.5で使用するのに適したmemcachedクライアントはどれですか?Memcached Providers @ CodeplexBeitmemcachedmemcached provider @Sourceforgeなどの多くの代替手段を見つけました


6
あなたは2008年のブログ投稿を指しています。Memcachedは、最近Windowsでかなり使いやすくなっています: northscale.com
Dustin

1
ダスティンに+1。私たちはNorthScaleを使用しており、非常にWindowsに対応しており、優れた管理(Web)UIを備えています
ram

2
@Dustinと@ram -ダスティン、あなたの+1を楽しむが、この質問は、2008年に頼まれた
ジャスティン

3
ふふ。それはその'08がそこにあるものでなければなりません。申し訳ありません。:)
ダスティン

回答:


49

Windowsでmemcachedを実行する必要があるのはなぜですか?これは、実稼働環境では高額な問題です。

コードをWindows環境で実行する必要がある場合は、Windows memcachedクライアントを入手して、* nixベースのmemcachedマシンと通信してください。

Server 2003または2008でmemcachedを実行している実稼働環境では、これらすべてのボックスのライセンスを取得することを意味します。Linuxは、OSSのすべてのメリットを提供します。TCOは、Windowsのmemcachedで直線的に上昇します

編集:

私がこの回答を書いてから約1。5年が経ち、それ以来多くのことが変わりました。特にダスティンのような人がコメントするときは、注意する必要があります。
したがって、実行中のWindowsでmemcachedを取得する方法は次のとおりです。Couchbase(以前のNorthscale)からWindows用のmemcachedをダウンロードします
通常、同じ本番マシンでmemcachedを実行する場合は、限られたメモリで起動する必要があります。つまり、memcachedが使用できる最大メモリを定義します。

c:\ Program Files \ memcached> memcached.exe -m128。

ここで、memcachedは最大128MBの使用量で実行されます。memcachedがWebサーバー上のすべてのメモリを占有することは望ましくありません。

memcachedをスケールアウトすることを決定した瞬間に、私が以前に言ったことを考慮する必要があります。さらに、キーと値の組み合わせで値を圧縮します。Webサーバーは通常CPU使用率をほとんど消費せず(2〜3%)、圧縮はCPU使用率と比較してネットワーク全体に多くの価値をもたらします。通常の圧縮が心配な場合は、LZOを試してください


2
あなたの答えをありがとう、これは私が探しているものです。
funky81 2008

31
WindowsでTCOはどのように指数関数的に上昇しますか?ライセンスコストは、マシンの数に比例して上昇します。しかし、ハードウェアコスト、ラックスペースと電気、サポート契約、およびオペレーターの給与を考慮すると、Windowsのライセンスコストは率直に言ってかなり重要ではありません。
グレッグブナ

23
チェリアンの議論に反論を加えるためだけに。Windowsでホストしたい場合の推進要因は、システム管理者の専門知識です。たとえば、memcachedボックスを表示するためだけに* nix管理者を雇うリソースがない小規模なショップは、会社がすでに精通しているプラ​​ットフォーム(Windowsなど)でホスティングすることで大きなメリットが得られます。
Joel Martinez

2
OPが尋ねたものには実際には何も対応していないので、この回答をDVしますが、これは特に彼が探していたものであると彼は言いました。
Chris Marisic 2010年

11
実際の質問に対応していないため、反対票を投じました。OPの問題が解決した場合、おそらく質問を書き直す必要がありますか?
sh-beta

21

ここで誰もRedisについてまだ言及していないことに驚いています-これは、文字列の豊富なデータ構造サポートを備えた、最も機能が豊富で最速(エントリーレベルのLinuxボックスで1秒あたり110,000SET)のKey-Valueデータストアの1つです。セット、リスト、ソートされたセットおよびハッシュ。

Windowsは公式にサポートされているプラ​​ットフォームではありませんが、すべてのテストに合格し、Windowsで完全に動作します。ここで利用可能なWindowsビルド(Cygwinを使用)があります: https //github.com/ServiceStack/ServiceStack.Redis#redis-server-builds-for-windows

また、現在使用されているほぼすべてのプログラミング言語のクライアントバインディングもあります。https://github.com/ServiceStack/ServiceStackでIOCにドロップする準備ができているC#POCOタイプのネイティブAPIサポート、トランザクションサポート、およびスレッドセーフクライアントマネージャーを備えたリッチなオープンソースC#Redisクライアントを維持してい ます。 Redis


12

当時Velocityは存在していなかったので、私が働いている会社、SkiviezのWindowsへのmemcachedポートを使用しました。これは主に、同じマシン上の複数のワーカープロセスに集中キャッシュを提供するためにのみ存在します。適度な使用(〜18,500ヒット/日)が見られるeコマースサイトでは、約18か月間正常に動作しています。私が使用したクライアントはEnyimでしたのキャッシュプロバイダーとして統合されたEnyimでした。そのクライアントは十分に機能しているようです。memcachedクライアントも、そもそもそれほど複雑ではありません。

もう一度やらなければならない場合、分散キャッシングソリューションのためにWindowsを使い続けることにコミットしていれば、おそらくVelocityを検討するでしょう。しかし、現在は機能しているので、触れません。

(余談ですが、それ以来、Cache*毎晩スケジュールされたタスクによって更新されるデータベースのキーテーブルに特定の列を追加することで、キャッシュの必要性のほとんどを否定しました。これにより、最初からリソースにかかる負担が大幅に軽減されましたキャッシュされた結果をmemcachedに保持することで、データベースにメモリの可用性に関するその後の負担を照会することでCPU時間に影響を与えます。また、キャッシュされたバージョンのデータにアクセスする場合は、計算されたものよりもコード内でより明確になります。 the-flyバージョン。分散キャッシュを使用する理由はたくさんあると思いますが、一歩下がって本当に必要かどうかを質問することは常に価値があります!)


VelocityはAppFabricの一部になりました
Jon

7

あなたが取り組んでいるプロジェクトが何であるかはわかりませんが、MicrosoftVelocityプロジェクトを ご覧になることをお勧めします。ページから:

「Velocity」は、スケーラブルで高性能なアプリケーションを開発するための分散型インメモリアプリケーションキャッシュプラットフォームです。「Velocity」は、任意の共通言語ランタイム(CLR)オブジェクトをキャッシュするために使用でき、単純なAPIを介したアクセスを提供します。「Velocity」の重要な側面は、分散キャッシュのパフォーマンス、スケーラビリティ、および可用性です。

いくつかのデモを見てきましたが、.netフレームワークとの統合が非常に優れているようです。

クライアントAPIの問題は、LAMPスタックを使用して、前述のように、memcachedのインスタンスを別のボックスで実行する必要があることです。速度を使用するということは、同じスタックで実行し続け、.netプラットフォーム全体でより緊密に統合されることを意味します。

そうは言っても、他の.netアプリケーションのキャッシュとしてベロシティを使用したい場合は、ベロシティデータを公開するために独自のAPIを作成する必要があるかもしれません。


私の知る限り、ベロシティはまだ開発中です。そのため、他の代替手段を検索しようとしています。そしてそれはmemcachedです
Funky81 2008

しばらく読んだ後、memcachedのように速度のインストールと保守は簡単ではありません
Funky81 2008

3
LAMPスタックを使用していますか?memcachedを実行するのにApache、MySQL、またはPHPは必要ないので、「Linuxを使用する」という意味ではありません。
GateKiller 2009年

6

Velocityは管理に少し複雑ですが、memcachedよりもはるかに強力です。私はアンチmemcachedではありません、少なくとも少しではありません、それは素晴らしいです。しかし、前進すると、純粋な.NETベースの新しいプロジェクトは、現在のリリースされていない状態であっても、Velocityを活用しないことに夢中です。


6

見ていSharedCacheを。そのオープンソース、使いやすく、非常に信頼性があります。

高性能の分散メモリオブジェクトキャッシングシステム。一般的な性質ですが、データベースの負荷を軽減することで、動的なWebの高速化や、アプリケーションの獲得を目的としています。http://www.sharedcache.comで私たちを訪問することを忘れないでください


3

クライアントAPIの問題は、LAMPスタックを使用して、前述のように、memcachedのインスタンスを別のボックスで実行する必要があることです。

まったく真実ではありません。Memcachedを実行するために、LAMP(Linux、Apache、MySQL、PHP)スタックは必要ありません。私は現在、速度がCTPから外れるまで、速度よりもmemcachedを好みます。ベロシティで少し遊んだことがありますが、扱いにくいことがわかりました。私はKISSのすべてのことに従います、あなたが知っている...それを単純にしてください。キャッシュよりも簡単なことはありません... Get(key)... Put(key、value)... Destroy(Key)。



1

私はここでのパーティーに少し遅れていることを知っています、そしてすでにたくさんの良い答えがあります。

Windows ServerでMembaseを使用して、大きな成功を収めました。Memcachedと100%互換性があり、優れたGUIインストーラーとWeb構成サーバーでビルドされます。管理は非常に簡単です。

このスレッドの範囲外ですが、一見の価値がある他のNoSQL機能も含まれています。開発、テスト、および(限定された)本番サーバーの無料ライセンスがあります。

Membaseのダウンロード

Membaseの追加機能が必要ない場合は、同じページにMemcached専用のWindowsインストールがあります。



0

Windowsでmemcachedクライアントを実行することに興味がある場合は、そのジョブを実行できる2つの追加のオープンソースサーバーがあります。どちらも標準のmemcachedサーバープロトコルを実装し、Javaで記述されているため、Windowsで実行できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.