簡體   English   中英

Apache Ignite - 從緩存中獲取所有內容

[英]Apache Ignite - get all from cache

我正在嘗試從 Apache Ignite 緩存中獲取所有項目。

目前我可以使用

ClientCache<Integer, BinaryObject> cache = igniteClient.cache("myCache").withKeepBinary();

BinaryObject temp = cache.get(1);

要獲取所有密鑰,我嘗試了以下操作:

try(QueryCursor<Entry<Integer,BinaryObject>> cursor = cache.query(new ScanQuery<Integer, BinaryObject>(null))) {
    for (Object p : cursor)
        System.out.println(p.toString());
}

這將返回內部的org.apache.ignite.internal.client.thin.ClientCacheEntry列表,我不能調用getValue

如何獲取此緩存的所有項目?

通過使用Iterator,您可以從緩存中獲取所有值和鍵。 下面是從緩存中檢索所有值的示例代碼。

Iterator<Entry<Integer, BinaryObject>> itr = cache.iterator();                
while(itr.hasNext()) {
    BinaryObject object = itr.next().getValue();
    System.out.println(object);
}

以下內容可以幫助您遍歷緩存中的所有記錄。

import javax.cache.Cache.Entry;

import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.Ignition;
import org.apache.ignite.binary.BinaryObject;

public class App5BinaryObject {

public static void main(String[] args) {
    Ignition.setClientMode(true);

    try (Ignite client = Ignition
            .start("/Users/amritharajherle/git_new/ignite-learning-by-examples/complete/cfg/ignite-config.xml")) {

        IgniteCache<BinaryObject, BinaryObject> cities = client.cache("City").withKeepBinary();
        int count = 0;
        for (Entry<BinaryObject, BinaryObject> entry : cities) {
            count++;
            BinaryObject key = entry.getKey();
            BinaryObject value = entry.getValue();

            System.out.println("CountyCode=" + key.field("COUNTRYCODE") + ", DISTRICT = " + value.field("DISTRICT")
                    + ", POPULATION = " + value.field("POPULATION") + ", NAME = " + value.field("NAME"));
        }
        System.out.println("total cities count = " + count);

    }

  }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM