使用 memcached 类型的桶在 couchbase 中多次获取密钥的好方法

问题描述 投票:0回答:2

我有一个 memcached 类型的 couchbase 存储桶。我想从桶中批量获取密钥。 N1QL 将无法工作,因为它是 memcached 类型。有什么好的方法可以做到这一点?我想避免多次调用,因为每个请求我必须一次获取大约 100 个键,并且不想大规模建立如此多的连接。

memcached couchbase
2个回答
2
投票

如果可以,最好迁移到“临时”存储桶,该存储桶仍在内存中运行,但可以复制、重新平衡、索引等。


1
投票

正如 Graham Pople 评论的那样,如果您知道文档 ID,则可以使用 Couchbase Java SDK 的 Reactive API 一次高效地获取多个文档。

文档:使用 Couchbase Java SDK 的 Reactive API 进行批处理

这是该文档中最通用代码示例的稍微修改版本:

List<String> docsToFetch = List.of("doc1", "doc2", "doc3");
Map<String, Throwable> failedResults = new ConcurrentHashMap<>();

List<GetResult> successfulResults = Flux.fromIterable(docsToFetch)
    .flatMap(key -> collection.reactive().get(key)
      .onErrorResume(e -> {
        failedResults.put(key, e);
        return Mono.empty();
      })
    )
    .collectList()
    .block();
}
© www.soinside.com 2019 - 2024. All rights reserved.