53

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

4

7 回答 7

59

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

从头开始设计,尽可能做到无阻塞。

当您请求数据、发布集合等时......有一个很小的并发队列插入,您会得到一个 Future 来阻止结果(对于常见情况,如 get 有一些方便的方法)。

积极优化

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

我在微基准测试中仍然做得很好,但是要与其他客户端进行公平比较,您必须设计不切实际的使用模式(例如,等待每个 set 操作的响应或围绕 get 构建锁以防止它们进行数据包优化)。

痴迷测试

我维护了一个非常严格的测试套件,每个版本都有覆盖率报告

错误仍然存​​在,但它们通常很小,而且客户端只会越来越好。:)

有据可查

示例页面提供了快速介绍,但javadoc提供了非常详细的信息。

提供高级抽象

我有一个映射到缓存的接口以及一个功能性的 CAS 抽象。二进制和文本都支持 incr-with-default 机制(由二进制协议提供,但在文本中相当棘手)。

跟上规格

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

我完成了第一个二进制协议服务器实现(测试服务器和 memcached 本身),这是第一个支持它的生产就绪客户端,并且做到了一流。

我还支持几种散列算法和节点分布算法,所有这些算法都针对每个构建都经过了良好的测试。如果你想要更好的性能,你可以做一个股票 ketama 一致的哈希,或者使用 FNV-1(甚至是 java 的本机字符串哈希)的派生。

于 2009-04-09T16:31:09.853 回答
5

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

特征

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

表现

  • 有关现有流行的 memcached java 客户端的基准测试,请参阅性能
  • 接收响应时反序列化
  • 对源代码的每一行进行性能调整。
于 2010-04-30T02:47:34.170 回答
5

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

于 2010-07-08T04:05:54.537 回答
4

大约一年前,当我不得不使用 memcached java 客户端时,spymemcached 连接器被描述为具有更多功能的优化 API。从那时起,memcached 客户端已经发布了许多新版本,因此可能值得一试。

FWIW 间谍客户端对我来说非常有效。

于 2009-04-09T14:57:58.057 回答
2

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

于 2009-08-19T01:24:24.927 回答
1

用于 Java 的 memcached 客户端spymemcached。不过两者都没有太多经验。

于 2009-04-08T21:39:47.273 回答
1

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

于 2009-10-14T06:50:28.230 回答