web-dev-qa-db-ja.com

EnyimMemcachedとBeITMemcachedのどちらの.NET Memcachedクライアントを使用していますか?

EnyimMemcachedhttps://github.com/enyim/EnyimMemcached )とBeITMemcachedの両方のようです( http://code.google.com/p/beitmemcached/ )は、人気のある.NET Memcachedライブラリです。どちらも開発中のかなりアクティブなプロジェクトであり、ダウンロード数は1,000を超えます。どちらを使用するかを見つけようとしましたが、競合する発言が見つかりました!私は別の関連する post を読みましたが、それでも決定を下す前にこれについてより多くの人々に尋ねたいです。

EnyimMemcachedは、プロジェクトのホームページ( https://github.com/enyim/EnyimMemcached )で主張し、

非公開の特別に手作りされた社内パフォーマンステストに基づいて、メモリやCPU時間などの負の量のシステムリソースを使用して、これまでで最速のC#クライアントです

そして

私たちはmemcachedのプロトコル仕様に従い、他の誰とも同じように厳密には守っていません。

一方、BeITMemcachedは、プロジェクトのWikiページ( http://code.google.com/p/beitmemcached/wiki/Features )を主張しています

BeIT Memcachedクライアントの広範な機能テストとパフォーマンステストを実行し、正常に機能していることを確認しました。他の2つのクライアント、Javaポートおよび Enyim memcachedクライアント )のパフォーマンスを比較すると、クライアントが消費するリソースが最も少なく、パフォーマンスが最高でした。 memcachedプロトコルの仕様に厳密に準拠し、memcachedの機能が最も多く、実際のコードサイズははるかに小さいです。

それで、これらまたは同様の何かについての経験がある人のために、どのクライアントを使用することを選択しましたか、そしておそらくあなたが選択したものをなぜ選択したのですか?

ありがとうございました、

レイ。

38
Ray

両方をテストしたところ、Enyimは予想される使用シナリオで最高のパフォーマンスを発揮することがわかりました:キャッシュされたオブジェクト(数百万ではない)の数、数百万のキャッシュGETリクエスト(平均Webサイトの同時実行負荷= 16〜20リクエスト)。

私たちのパフォーマンス要因は、リクエストを行ってから、呼び出し側サーバーのメモリでオブジェクトが初期化されるまでの時間を測定することでした。どちらのライブラリもこの仕事を続けていたはずですが、テストではenyimクライアントが好まれました。

19
jro
7
rpearsondev

EniymクライアントのStore()が正しく機能しない場合があります。ほとんどの場合、memcachedサービスの再起動後に、キーがキャッシュに存在しない場合に発生します。この構造:

        T val = _client.Get<T>(key);
        if (val == null)
        {
            // ... filling val variable ...
            var result = _client.Store(StoreMode.Add, key, val);
            // ... result can be false, sometimes ...
        }

50/50で動作します。 Tエンティティは[Serializable]です。

4
user403579

Enyimが最も効果的に機能することがわかりました。使いやすく、信頼性が高く、高速です:)

3
pablox