我正在使用CouchBase 4.0和java sdk 2.2进行测试。我正在插入10个文件,其密钥始终以“190”开头。
插入这10个文件后,我用以下方法查询:
cb.restore("190", cache);
Thread.sleep(100);
cb.restore("190", cache);
'restore'方法中的查询是:
Statement st = Select.select("meta(c).id, c.*").from(this.bucketName + " c").where(Expression.x("meta(c).id").like(Expression.s(callId + "_%")));
N1qlQueryResult result = bucket.query(st);
第一次恢复调用返回0文档:
Query 'SELECT meta(c).id, c.* FROM cache c WHERE meta(c).id LIKE "190_%"' --> Size = 0
第二次调用(100ms之后)返回10个文档:
Query 'SELECT meta(c).id, c.* FROM cache c WHERE meta(c).id LIKE "190_%"' --> Size = 10
我尝试在'insert'语句中添加PersistTo.MASTER,但它都不起作用。
似乎'insert'不会立即保留。
任何帮助都会非常感激。
琼。
答案 0 :(得分:3)
您正在使用N1QL查询数据 - 而N1QL最终只是一致(默认情况下),因此只会在重新计算索引后显示。这与数据是否持久性无关(意思是:从RAM写入光盘)。
您可以尝试将scan_consitency级别更改为默认值 - NOT_BOUNDED - 以获得一致的结果,但返回时间会更长。