2009-03-29 7 views
38

Wydaje się zarówno EnyimMemcached (https://github.com/enyim/EnyimMemcached) i BeITMemcached (http://code.google.com/p/beitmemcached/) są popularne biblioteki .NET Memcached. Oba są rozsądnie aktywnymi projektami i mają ponad tysiąc pobrań. Próbując dowiedzieć się, którego użyć, ale znaleźć konkurencyjne uwagi! Czytałem inne powiązane post, ale wciąż chcę zapytać więcej osób o tym przed podjęciem decyzji.Których klientów .NET Memcached używasz, EnyimMemcached vs. BeITMemcached?

EnyimMemcached roszczeń na swojej stronie internetowej projektu (https://github.com/enyim/EnyimMemcached), że

na podstawie naszej nieujawnionych specjalnie ręcznie teście wydajności w domu jesteśmy najszybciej C# klient zawsze, używając kwoty ujemnej systemu zasoby, czy to pamięci lub CPU czas

i

kierujemy Szczegółowy protokół memcached jako ściśle jak nikt inny: nawet Memcached faceci pytają nas, jeśli nie rozumieją coś

Podczas BeITMemcached roszczeń na swojej stronie wiki projektu (http://code.google.com/p/beitmemcached/wiki/Features), które

Mamy przeprowadziliśmy obszerne testy funkcjonalne i testy wydajności klienta Beit Memcached i jesteśmy usatysfakcjonowani, że działa on tak, jak powinien. Kiedy porównaliśmy wydajność z dwoma innymi klientami, portem Java i Enyim memcached client, nasz klient zużył najmniej zasobów i uzyskał najlepszą wydajność. Jest również ściśle przestrzegane specyfikacje protokołu memcached, ma najbardziej memcached funkcje i jest nadal znacznie mniejszy w rzeczywistej wielkości kodu.

Więc dla tych, którzy mają doświadczenie w tych lub coś podobnego, którego klienta wybrałeś i dlaczego wybrałeś ten, który wybrałeś?

Dziękujemy,

Ray.

+0

Enym teraz przeniósł się do GitHub: http://github.com/enyim/EnyimMemcached –

Odpowiedz

19

Testowaliśmy oba produkty i stwierdziliśmy, że Enyim działa najlepiej, jeśli chodzi o nasz przewidywany scenariusz użycia: wiele (ale nie miliony) pamięci podręcznych obiektów i miliony żądań przechwytywania w pamięci podręcznej (średnie obciążenie strony podczas współbieżności = 16-20 żądań.)

Nasz współczynnik wydajności polegał na pomiarze czasu od wykonania żądania do zainicjowania obiektu w pamięci na serwerze wywołującym. Obie biblioteki utrzymałyby tę pracę, ale klient enyim był preferowany w naszych testach.

3

Znalazłem Enyima, aby działał jak najlepiej. Jest łatwy w użyciu, niezawodny i szybki :)

4

Sklep użytkownika Eniym czasami nie działa poprawnie. Dzieje się tak, gdy klucz nie występuje w pamięci podręcznej, w większości przypadków po ponownym uruchomieniu usługi memcached. Ta konstrukcja:

 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 ... 
     } 

działa 50/50. Obiekt T to [Serializable].

+0

pracowałeś, co jest przyczyną tego problemu lub masz pracę - na to? –

+0

Ditto. Czy możesz nam powiedzieć, jaki był problem? Zgaduję, że to miało coś wspólnego z [Serializeable], ale chciałbym usłyszeć od ciebie więcej informacji na ten temat :) –

+0

Jest to bardzo niedoceniany problem. Jest to szczególnie częste, jeśli określisz limit czasu/datę ważności. –