你使用哪个.NET Memcached客户端,EnyimMemcached还是BeITMemcached?

40
似乎 https://github.com/enyim/EnyimMemcachedhttp://code.google.com/p/beitmemcached/ 都是流行的.NET Memcached库。这两个项目都在积极开发中,并且已经有超过一千次下载。正在尝试弄清楚应该使用哪一个,但发现了竞争性的评论!我确实读了另一篇相关的post,但仍然想在做出决定之前问更多的人。
在其项目主页(https://github.com/enyim/EnyimMemcached)上,EnyimMemcached声称:
根据我们内部特别手工制作的保密性能测试,我们是最快的C#客户端,使用负面的系统资源,无论是内存还是CPU时间。
我们严格遵循Memcached协议规范,甚至连Memcached的人也会问我们如果他们不理解某些东西。

http://code.google.com/p/beitmemcached/wiki/Features项目wiki页面上,BeITMemcached声称:

我们对BeIT Memcached客户端进行了广泛的功能测试和性能测试,我们满意它的工作表现。当我们将其与另外两个客户端——Java端口和Enyim memcached客户端进行性能比较时,我们的客户端消耗的资源最少,表现最佳。它还更严格地遵循了memcached协议规范,具有最多的memcached特性,并且实际代码大小仍然要小得多。

因此,对于那些有这方面经验或类似经验的人来说,你选择使用哪个客户端,可能是为什么?

谢谢,

雷。


Enym现在已经迁移到GitHub了:http://github.com/enyim/EnyimMemcached - Bill Paetzke
4个回答

19
我们进行了测试,并发现 Enyim 对于我们预期的使用场景表现最佳:缓存了许多对象(但不是数百万个),以及执行了数百万次缓存获取请求(平均网站并发负载 = 16-20个请求)。
我们的性能因素是从发出请求到在调用服务器上初始化对象所需的时间。两个库都可以胜任这项工作,但在我们的测试中,enyim客户端更受欢迎。


3

我发现Enyim是最好的。它易于使用,可靠且快速 :)


3

Eniym客户端的Store()有时无法正常工作。这通常发生在缓存中没有存在该键(key)时,大多数情况是在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 ...
        }

工作效果有好有坏。T实体是[Serializable]。


你已经找出了导致这个问题的原因,还是有一个解决方法? - Pieter Breed
一样的问题。你能告诉我们问题是什么吗?我猜可能与[Serializable]有关,但我很想听听你对此的更多信息 :) - Tod Thomson
这是一个非常被低估的问题。如果您指定了过期超时/日期,它尤其常见。 - Dmitry S.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接