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,请参阅性能 。
- 在接收响应的同时进行反序列化
- 性能调整到源代码的每一行。
大约一年前,当我不得不使用一个memcached java客户端时,spymemcached连接器被描述为具有更多function的优化API。 从那以后,memcached客户端就有了一些新的版本,所以值得一试。
FWIW间谍客户端为我完美工作。
我一直在使用SpyMemcached,并且必须同意它是那里最好的一个,有很多新的改进。
有Java的memcached客户端和spymemcached 。 虽然没有太多的经验。
请尝试xmemcached ,它也是基于nio的,并具有一些强大的function。