我有一个用例,我想从 Couchbase 更新数据,所以当我查询 couchbase 的数据时,就像:
bucket.get.query(Query.simple(query))
它在一段时间内为我提供了更新的数据,但随着数据库大小的增加,它并没有为我提供更新和一致的数据。在这里,查询正在扫描索引并相应地提供所需的数据。因此,为了获得一致的数据,我按照couchbase 文档的建议使用了 ScanConsistency.REQUESTPLUS。但是一旦我更改代码并执行以下操作:
bucket.get.query(Query.simple(query, QueryParams.build().consistency(ScanConsistency.REQUEST_PLUS)
.serverSideTimeout(10000, TimeUnit.SECONDS)))
它每次都给我一个超时异常,并且永远不会返回结果。您能否解释一下如何在这里实现数据的一致性以及为什么它总是给我超时异常。
堆栈跟踪:
java.lang.RuntimeException: java.util.concurrent.TimeoutException
[error] at com.couchbase.client.java.util.Blocking.blockForSingle(Blocking.java:93)
[error] at com.couchbase.client.java.CouchbaseBucket.query(CouchbaseBucket.java:548)
[error] at com.couchbase.client.java.CouchbaseBucket.query(CouchbaseBucket.java:491)
任何帮助表示赞赏。!