Java Memcached客户端

哪个是最好的Java memcached客户端,为什么?

作为spymemcached的作者,我有点偏见,但我会说这是我的原因如下:

从头开始devise,无处不在的可能性。

当你要求数据时,发出一个集合等…有一个小的并发队列插入,你会得到一个Future来阻止结果(对于像get这样常见的一些方便的方法)。

优化积极

您可以在我的优化页面上阅读更多内容,但我会进行整体应用程序优化。

我仍然在微观基准testing中做得相当好,但为了与另一个客户端进行比较,您必须devise出不切实际的使用模式(例如,等待每个集合操作的响应或者构buildlocking以防止它们进行分组优化)。

执迷不悟

我维护一个非常严格的testing套件,每个版本都有覆盖报告 。

错误依然存在,但通常都很小,客户也越来越好。 🙂

那么logging

示例页面提供了一个快速介绍,但javadoc进入了巨大的细节。

提供高级抽象

我有一个到caching的Map接口以及一个CASfunction抽象。 二进制和文本都支持incr-with-default机制(由二进制协议提供,但在文本中比较棘手)。

与规格保持一致

我在服务器本身做了很多工作 ,所以我跟上了协议的变化。

我做了第一个二进制协议服务器实现(包括一个testing服务器和memcached本身),这是第一个支持它的生产就绪客户端,并且是一stream的。

我也得到了一些散列algorithm和节点分布algorithm的支持,所有这些algorithm在每个构build中都经过了充分的testing。 如果你想要更好的性能,你可以做一个股票ketama一致的散列,或使用FNV-1(或甚至java的本地string散列)的派生。

我相信memcached java客户端是最好的客户端。

特征

  • 二进制协议支持 。 访问存储在memcached服务器中的键/值的最快方法。
  • UDP协议支持 。 您可以使用tcp协议来设置密钥,并使用udp协议来获取密钥。 实际上,一些大公司正在这样做。
  • 支持定制的序列化和反序列化。
  • 带有NIO和直接缓冲区的连接池。 dynamic增加连接池不使用时的连接。

性能

  • 有关现有stream行的memcached Java客户端的基准testing,请参阅性能 。
  • 在接收响应的同时进行反序列化
  • 性能调整到源代码的每一行。

如果这些数字仍然有效,那么… http://xmemcached.googlecode.com/svn/trunk/benchmark/benchmark.html

大约一年前,当我不得不使用一个memcached java客户端时,spymemcached连接器被描述为具有更多function的优化API。 从那以后,memcached客户端就有了一些新的版本,所以值得一试。

FWIW间谍客户端为我完美工作。

我一直在使用SpyMemcached,并且必须同意它是那里最好的一个,有很多新的改进。

有Java的memcached客户端和spymemcached 。 虽然没有太多的经验。

请尝试xmemcached ,它也是基于nio的,并具有一些强大的function。