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

时间:2018-02-09 15:23:24

标签: java xodus

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

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

  

prefixSubMap

2 个答案:

答案 0 :(得分:1)

没有这样的功能,但您可以使用Environments API完成这项工作。假设您有Transaction txnStore storeByteIterable 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()。