web-dev-qa-db-ja.com

Windowsおよび.NETでMemcached

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

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

83
Funky81

Windowsでmemcachedを実行する必要があるのはなぜですか?実稼働環境では費用のかかる問題です。

コードをWindows環境で実行する必要がある場合は、Windows memcachedクライアントを取得し、* nixベースのmemcachedマシンと通信します。

Server 2003または2008でmemcachedを実行する実稼働環境では、これらすべてのボックスのライセンスを取得することになります。 Linuxは、すべてのOSSの利点を提供します。 TCOは、Windowsのmemcachedに比例して上昇します

編集:

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

c:\ Program Files\memcached> memcached.exe -m 128.

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

スケールアウト memcachedを決定した瞬間に、前に言ったことを考慮する必要があります。さらに、キーと値の組み合わせで値を圧縮します。通常、WebサーバーはCPUの使用量が非常に少ない(2〜3%)ため、CPU使用率と比較して、ネットワーク全体に大きな価値がもたらされます。通常の圧縮が気になる場合は、 [〜#〜] lzo [〜#〜] を試してください。

49
Cherian

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

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

また、現在使用されているほぼすべてのプログラミング言語用のクライアントバインディングもあります。 IOC at: https://github.com/ServiceStack/ServiceStack.Redis

21
mythz

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

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

(それ以外に、それ以降、毎晩スケジュールされたタスクによって更新されるデータベース内のキーテーブルに特定のCache*列を追加することで、キャッシュの必要性のほとんどを無効にしました。データベースのクエリによるCPU時間の最初のヒットから、キャッシュされた結果をmemcachedに保持することによるメモリの可用性へのその後の負荷まで、キャッシュされたバージョンのデータがアクセスされるときのコードでより明確になりました計算されたオンザフライバージョン。分散キャッシュを使用する理由はたくさんあると思いますが、一歩下がって本当に必要かどうかを疑問視する価値は常にあります!)

12

私はあなたが取り組んでいるプロジェクトが何であるかわかりませんが、あなたは Microsoft Velocityプロジェクト を見てみたいかもしれません:ページから:

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

私はいくつかのデモを見てきましたが、.NETフレームワークとの素晴らしい統合が見られます。

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

そうは言っても、他の.netアプリケーションのキャッシュとして速度を使用する場合は、速度データを公開するために独自のAPIを記述する必要があります。

7
lomaxx

SharedCache をご覧ください。オープンソースで使いやすく、非常に信頼性が高い。

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

6
kay.one

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

6
Silvas

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

まったくそうではありません。 Memcachedを実行するには、LAMP(Linux、Apache、MySQL、PHP)スタックは必要ありません。私は現在、速度がCTPから外れるまで、速度よりもmemcachedを好みます。私は少しの間ベロシティをいじりましたが、あまりにも扱いにくいと感じました。私はその全体KISS事、あなたが知っている...それをシンプルに保ちなさい。キャッシングより簡単なものはない... Get(key)... Put(key、value)... Destroy(キー)。

3
TMOSS
2
Peter K.

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

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

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

Membase Downloads

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

1
Eric Burcham

この質問の解決策を確認するには、以下のリンクに従ってください。

Windows環境で本番用にmemcachedを実装できました。

http://www.codeproject.com/Articles/96698/Implementing-Distributed-Caching-using-Memcached http://www.deanhume.com/Home/BlogPost/object-caching--- -net-4/37 http://latebound.blogspot.com/2008/10/using-memcached-from-c.html

1
Nurhak Kaya

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

0
Brent Matzelle