我用的API,spymemcached,基本上给
MemcachedClient memc = new MemCachedClient(new InetSocketAddress("host", port));
它并没有真正给我 connect()
或 isConnected()
函数。该 API 提供了一个 DefaultConnectionFactory
,但乍看代码,它看起来不像是在管理连接池。有谁知道如何在 spymemcached 或另一个 Java memcached 库中执行此操作?
更一般地说 - 让我的应用程序容忍连接丢失的最“道德”方式是什么?
最佳答案
当您调用 MemcachedClient
构造函数它会自动连接到您的 memcached 服务器。没有 connect()
或 isConnected()
方法。如果您失去与 Spymemcached 的连接,它将尝试为您重新连接。此外,DefaultConnectionFactory
旨在用于指定特殊的连接属性(例如散列方法和故障模式)。如果你想使用连接工厂,那么你需要使用 MemcachedClient
采用 ConnectionFactory
的构造函数和一个 List<InetSocketAddress>
.
Spymemcached 使用单个 IO 线程,但其行为类似于多线程客户端。例如,对于一个线程,您每秒最多可以执行 50k 次操作。如果您想创建线程池,则必须在您的用户应用程序中创建。
More generally - what's the most "moral" way to make my application tolerant against loss of connection?
就像我上面提到的,如果 Spymemcached 失去与服务器的连接,它将尝试重新连接。这个过程通常需要大约 17 毫秒。然而,大多数使用客户端的人确实在他们的应用程序代码中创建了一个线程池。
关于java - 如何在 Java 中连接池 memcached (spymemcached),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10691528/