我需要像MapDB的prefixSubMap这样的函数。 在Xodus有这样的功能吗?我找不到界面。
https://jankotek.gitbooks.io/mapdb/content/btreemap/composite-keys.html
prefixSubMap
答案 0 :(得分:1)
没有这样的功能,但您可以使用Environments API完成这项工作。假设您有Transaction txn
,Store store
和ByteIterable keyPrefix
,则枚举其键以keyPrefix开头的键/值对将如下所示:
int prefixLen = keyPrefix.getLength();
try (Cursor cursor = store.openCursor(txn)) {
if (cursor.getSearchKeyRange(keyPrefix) != null) {
do {
ByteIterable key = cursor.getKey();
// check if the key starts with keyPrefix
int keyLen = key.getLength();
if (keyLen < prefixLen ||
ByteIterableUtil.compare(keyPrefix, key.subIterable(0, prefixLen)) != 0) {
break;
}
// wanted key/value pair is here
ByteIterable value = cursor.getValue();
...
} while(cursor.getNext());
}
}
答案 1 :(得分:0)
我找到了store.openCursor()和cursor.getSearchKey()。