2009-03-29 7 views
38

parece que tanto EnyimMemcached (https://github.com/enyim/EnyimMemcached) y BeITMemcached (http://code.google.com/p/beitmemcached/) son bibliotecas de Memcached .NET populares. Ambos son proyectos razonablemente activos en desarrollo y tienen más de mil descargas. ¡Intentando averiguar cuál usar pero encontró comentarios que compiten! Leí otro relacionado post pero aún quiero preguntarle a más personas sobre esto antes de tomar una decisión.¿Qué cliente Memcached .NET usa, EnyimMemcached vs. BeITMemcached?

EnyimMemcached demandas en su página web del proyecto (https://github.com/enyim/EnyimMemcached), que

basado en nuestra prueba de rendimiento de la casa no se había comunicado especialmente artesanal somos los más rápidos C# cliente nunca, utilizando importe negativo de sistema recursos, ya sea de memoria o tiempo de CPU

y

seguimos especificación del protocolo de memcached tan estrictamente como nadie más: incluso los chicos memcached preguntar si no entienden algo

Mientras BeITMemcached reclamaciones en su página wiki del proyecto (http://code.google.com/p/beitmemcached/wiki/Features) que

Nosotros hemos realizado pruebas funcionales extensas y pruebas de rendimiento del cliente BeIT Memcached y estamos satisfechos de que esté funcionando como debería. Cuando comparamos el rendimiento con otros dos clientes, el puerto de Java y el Enyim memcached client, nuestro cliente consumió menos recursos y tuvo el mejor rendimiento. También está siguiendo las especificaciones de protocolo de memcached de forma más estricta, tiene la mayoría de las características de memcached y aún es mucho más pequeño en el tamaño de código real.

Entonces, para aquellos que tienen experiencia en estos o algo similar, ¿qué cliente elegiste usar y posiblemente por qué elegiste el que elegiste?

Gracias,

Ray.

+0

Enym trasladó a GitHub ahora: http://github.com/enyim/EnyimMemcached –

Respuesta

19

Probamos ambos y encontramos que Enyim ofrece lo mejor para nuestro escenario de uso esperado: muchos (pero no millones) objetos almacenados en caché y millones de solicitudes de caché (promedio de concurrencia del sitio web carga = 16-20 solicitudes)

Nuestro factor de rendimiento fue medir el tiempo transcurrido desde hacer la solicitud hasta tener el objeto inicializado en la memoria en el servidor de llamadas. Ambas bibliotecas habrían sostenido el trabajo, pero el cliente enyim fue preferido en nuestras pruebas.

3

He encontrado que Enyim funciona mejor. Es fácil de usar, confiable y rápido :)

4

Eniym client's Store() a veces no funciona correctamente. Ocurre cuando la clave no se presenta en la memoria caché, en la mayoría de los casos después de reiniciar el servicio de memcached. Esta construcción:

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

funciona 50/50. La entidad T es [Serializable].

+0

¿Ha trabajado lo que está causando este problema o tiene una obra - ¿Por eso? –

+0

Ídem. ¿Puede decirnos cuál fue el problema? Supongo que fue algo relacionado con [Serializables], pero me gustaría recibir más información de usted en este caso :) –

+0

Este es un problema muy subestimado. Es especialmente común si especifica un vencimiento/fecha de caducidad. –