我想通过使用异步获取来提高查询couchbase视图的性能。 我看过他们的文档有关正确的方式做的话,它会是这样的:如何从使用批量的couchbase获得有序的结果获取
Cluster cluster = CouchbaseCluster.create();
Bucket bucket = cluster.openBucket();
List<JsonDocument> foundDocs = Observable
.just("key1", "key2", "key3", "key4", "key5")
.flatMap(new Func1<String, Observable<JsonDocument>>() {
@Override
public Observable<JsonDocument> call(String id) {
return bucket.async().get(id);
}
})
.toList()
.toBlocking()
.single();
伟大的工程和快速,但因为我靠结果的顺序上,看来我需要做的一些额外的工作,以保持结果的顺序。 在上面的示例中,JsonDocument列表包含所有5个文档,但顺序随呼叫而变化。 使用JavaRx功能或者couchbase Java SDK功能来排序结果有没有优雅的方法?
我能想到的唯一解决方案是将结果保存到HashMap中,然后使用此HashMap将原始ID列表转换为JsonDocuments的有序列表。
是否有任何理由选择concatMap over concatMapEager?内部GET执行顺序无关紧要,但返回列表的顺序应与输入列表匹配。 – Eyal
ConcatMap没有缓冲区,如果例如所有的响应都是相反的顺序,并且你做了大量的获取,那么缓冲区可能会变得非常大。那会是内存开销。除此之外,不是真的AFAIK –