【问题标题】:Java Memcached Client [closed]Java Memcached 客户端 [关闭]
【发布时间】:2010-10-18 10:04:32
【问题描述】:

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

【问题讨论】:

  • 定义“最佳”。你想优化什么?
  • 对于spymemcached,最新的jar可以在maven上找到,最新的源码在github上,但是文档还在google code上......

标签: java web-applications memcached


【解决方案1】:

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

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

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

积极优化

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

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

用心测试

我在每个版本中都使用coverage reports 维护一个非常严格的测试套件。

错误仍然存​​在,但它们通常很小,而且客户端会不断改进。 :)

有据可查

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

提供高级抽象

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

跟上规格

我在服务器本身上做了一个lot of work,所以我跟上协议的变化。

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

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

【讨论】:

  • 在生产中使用,最近浏览了网站 javadoc 上的源代码。只想说,真的,真的很不错的作品。谢谢。
  • 截至今天,最新版本中存在一个问题 - code.google.com/p/spymemcached/issues/detail?id=136。似乎正在解决这个问题,但如果您刚刚开始,请注意这一点。
  • 136 已修复,并且正在一些环境中进行测试。发布迫在眉睫。您可以从列表中获取更多最新信息。
  • @Dustin,这可能是一个愚蠢的问题(来自 memcached 菜鸟),但是您的单线程实现如何有效地服务于多线程应用程序?
  • memcached 本身在很长一段时间内都是单线程的,直到它实际上可以从消耗更多的 CPU 中受益。线程有利于在多个(大部分)独立处理器之间展开计算。线程 API 通常用作并发原语,但它们主要是并行原语。您不需要多个线程来对并发进行建模。
【解决方案2】:

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

特点

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

性能

  • 请参阅 performance,了解现有流行的 memcached java 客户端的基准测试。
  • 在接收响应时反序列化
  • 在源代码的每一行中进行性能调优。

【讨论】:

【解决方案3】:

【讨论】:

    【解决方案4】:

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

    FWIW 间谍客户端非常适合我。

    【讨论】:

      【解决方案5】:

      我一直在使用 SpyMemcached,我不得不承认它是目前市面上最好的,有很多更新的改进。

      【讨论】:

        【解决方案6】:

        memcached client for Javaspymemcached。不过两者都没有太多经验。

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-03-31
            • 2019-05-23
            • 1970-01-01
            • 1970-01-01
            • 2011-06-08
            • 2018-08-11
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多