我正在使用 RocksDB Java JNI,并希望在将新条目添加到 RocksDB 时获取它们。
Thread t = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
try {
System.out.println("Putting " + i);
rocksDB.put(("key " + i).getBytes(), ("value " + i).getBytes());
Thread.sleep(100);
} catch (InterruptedException | RocksDBException e) {
e.printStackTrace();
}
}
}, "Putting thread");
t.start();
Thread.sleep(1000); // wait for sometime
ReadOptions readOptions = new ReadOptions();
readOptions.setTailing(true);
try (RocksIterator rocksIterator = rocksDB.newIterator(readOptions)) {
for (rocksIterator.seekToFirst(); rocksIterator.isValid(); rocksIterator.next()) {
System.out.println(new String(rocksIterator.key()) + " = " + new String(rocksIterator.value()));
}
}
t.join();
在这里,我想它是在那个时刻(即之后)创建一个快照1 sec
,并且只有那些添加的元素才会被打印出来。我预计尾随迭代器应该被阻塞,因为将添加新条目。
有没有关于如何在 RocksDB 中使用尾迭代器的示例?