Spymemcached,操作和连接工厂的时间差异

时间:2014-01-16 17:18:32

标签: 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);

1 个答案:

答案 0 :(得分:2)

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

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

cfb.setOpTimeout(timeoutmillis);

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

因此cfb.setOpTimeout(timeoutmillis)的用法只是将处理所有异步工作委托给客户端,并在我们使用getgetBulk等简单方法时简化代码库。