java - 如何在 Java 中连接池 memcached (spymemcached)

标签 java memcached spymemcached

我用的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/

相关文章:

python - 安装 pylibmc 时出现 Heroku/Django 错误

java - 在线程中获取和设置标志变量

java - 有什么方法可以从代码编辑器创建方法级断点吗?

ruby-on-rails - 乘客得到MemcachedClientError的Memcached gem 问题

ruby-on-rails - Rails 3 的 Memcached 问题。对象没有被第二次反序列化

redis - 如何使用 Spymemcached 获得 Redis Cloud Memcached 的身份验证?

java - 一台 Memcached 服务器可用于多个客户端

java - Couchbase客户端如何连接到服务器

java - 从 Java 5 SE 迁移到 Java 6 SE 后,JAXB 'date' 转换失败

java - 为什么Android studio在实现 'constraintlayout:2.0.0-beta1'后出现错误