我有一个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将被传输到客户端,并用作期货的超时,该期货将客户端内部的memcached异步操作包装起来。如您所见,您可以在内存缓存客户端上使用一对异步和同步版本的方法(例如asyncGetget)。虽然asyncGet返回一个将来的对象,我们可以通过异步代码使用自己的超时来使用它,但是get消除了它,并在客户端内部执行了所有未来机制,并使用opTimeout作为超时来从内部将来的对象中获取结果。没有暴露给我们。

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

09-26 11:23