java - Spymemcached,操作和连接工厂中的超时差异

标签 java timeout memcached spymemcached

我有一个针对一组主机运行操作的 spymemcached 客户端。我注意到在 get 操作中,你可以这样做:

Future<Object> result = client.asyncGet(key);
Object data = result.get(timeoutmillis, TimeUnit.MILLISECONDS);

这样做有什么不同?

ConnectionFactoryBuilder cfb = new ConnectionFactoryBuilder();
cfb.setOpTimeout(timeoutmillis);

最佳答案

我看到很久以前就有人问过这个问题......但是如果有人需要答案的话:

ConnectionFactoryBuilder 只是 ConnectionFactory 的构建器。 ConnectionFactory 用于设置 memcached 客户端,而 opTimeout 只是我们可以通过此构建器设置的参数之一:

cfb.setOpTimeout(timeoutmillis);

timeoutmillis 将被传输到客户端并用作 Futures 的超时,将 memcached 异步操作包装在客户端内。如您所见,可以在 memcached 客户端上使用成对的异步和同步版本的方法(例如 asyncGetget)。虽然 asyncGet 返回一个 future 对象,我们可以使用我们自己的异步代码超时,get 消除它并在客户端内完成所有 future 机制并使用 opTimeout 作为超时来从未向我们公开的内部 future 对象获取结果。

所以使用 cfb.setOpTimeout(timeoutmillis) 只是将处理所有异步工作委托(delegate)给客户端,并在我们使用像 get 这样的简单方法时简化了我们的代码库,getBulk

关于java - Spymemcached,操作和连接工厂中的超时差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21168527/

相关文章:

java - Constructor-Injected 字段在 Spring CGLIB 增强 bean 中为 null

java - 如何等待 requestLocationUpdates() 回调 Intent 完成?

java - Memcached 中的多个缓存

java - Mockito 转换为泛型

java - 无法更改 Android 4.4.2 上的当前语言环境

java - 在 Java 中,为什么 readLine() 会阻塞已关闭的套接字连接?

java - RxJava 中的超时

c# - WCF:套接字连接已中止。远程主机超过接收超时

javascript - 如何在 Node 中缓存使用 fetch 的异步函数中的数据

google-app-engine - 高效查询策略 : keys only query + memcache in appengine?