Java Memcached客户端

Jav*_*Guy 52 java memcached web-applications

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

Dus*_*tin 56

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

从头开始设计,随处可能无阻塞.

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

积极优化

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

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

经过严格测试

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

错误仍然存​​在,但它们通常很小,而且客户端一直在变得更好.:)

记录良好

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

提供高级抽象

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

跟上规格

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

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

我也得到了几种哈希算法和节点分配算法的支持,所有这些算法都经过了很好的测试.如果你想要更好的性能,你可以使用FNV-1(甚至java的本机字符串散列)来执行库存ketama一致哈希或衍生.

  • 在生产中使用,最近查看了网站上javadoc的源代码.只是想说,真的,非常好的工作.谢谢. (2认同)
  • 136已经修复,并且正在几个环境中进行测试.发布迫在眉睫.您可以从列表中获取更多最新信息. (2认同)
  • memcached本身是单线程的很长一段时间,直到它实际上可以从消耗更多的CPU中受益.线程有利于跨多个(大多数)独立处理器分散计算.线程API通常用作并发原语,但它们主要是并行原语.您不需要多个线程来建模并发. (2认同)

小智 5

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

特征

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

性能

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