我有一个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异步操作包装起来。如您所见,您可以在内存缓存客户端上使用一对异步和同步版本的方法(例如asyncGet
和get
)。虽然asyncGet
返回一个将来的对象,我们可以通过异步代码使用自己的超时来使用它,但是get
消除了它,并在客户端内部执行了所有未来机制,并使用opTimeout作为超时来从内部将来的对象中获取结果。没有暴露给我们。因此,在使用
cfb.setOpTimeout(timeoutmillis)
,get
等简单方法时,使用getBulk
只是将处理所有异步工作委托给客户端,并简化了代码库。