Xodus 可以通过键前缀获取集合吗?

can Xodus get collection by key prefix?

我需要像MapDB的prefixSubMap这样的函数。 Xodus有这样的功能吗?我找不到接口。

https://jankotek.gitbooks.io/mapdb/content/btreemap/composite-keys.html

prefixSubMap

我发现了 store.openCursor() 和 cursor.getSearchKey()。

没有这样的功能,但您可以使用环境 API 来完成这项工作。鉴于您有 Transaction txnStore storeByteIterable keyPrefix,枚举其键以 keyPrefix 开头的 key/value 对将如下所示:

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());
    }
}