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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (51)

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

提问于
用户回答回答于

我的原因如下:

从头开始设计,在任何地方都可以实现无阻塞。

当你询问数据,发布一个集合等...有一个小的并发队列插入,你会得到一个Future来阻塞结果(对于像get这样的常见情况,有一些方便的方法)。

优化积极

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

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

执迷不悟

我维护一个非常严格的测试套件,并在每个版本中都提供覆盖报告

错误依然存在,但它们通常很小,而且客户端正在变得越来越好。:)

记录完好

示例页面提供了一个简要介绍,但javadoc的进入极大的细节。

提供高级抽象

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

与规格保持一致

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

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

我也得到了一些散列算法和节点分布算法的支持,所有这些算法都经过了每个构建的充分测试。如果你想获得更好的性能,你可以做一个股票ketama一致的散列,或者使用FNV-1(或甚至java的本地字符串散列)的派生。

用户回答回答于

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

特征

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

性能

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

扫码关注云+社区