ヘイルキャストIMapから別のマップに5百万エントリをロードしたいのに時間がかかりすぎます。それは考えアプリケーションの起動中にハゼルキャストマップから別のマップに5百万エントリをロードする必要があります
IMap map = hc.getMap("some-map");
Map result = map.getAll(map.keySet());
しかし:それはあまり時間を取る必要がありますし、私のアプリケーションは、早けれpossible.Belowあなたはこのような何かを行うことができ、コードスニペット
//localMap is another map where i want to put all entries from Hazelcast
Map<Object, Object> localMap = new ConcurrentHashMap();
//imap is hazelcast map reference
Iterator<Object> itr = imap.keySet().iterator();
while (itr.hasNext()) {
Object obj = itr.next();
localMap.put(obj, imap.get(obj));
}
//returning entry set of local map
return localMap.entrySet().iterator();
5つのスレッド、各コピーのみ100万エントリにそれを並列化? – Shark
バックグラウンドスレッドでマップを初期化できないため、アプリケーションをより速く開始できますか? – StephaneM
http://docs.hazelcast.org/docs/latest/javadoc/com/hazelcast/core/IMap.html#executeOnEntries-com.hazelcast.map.EntryProcessor-が役立ちます。しかし一般に、これは設計上の問題のように見えます。以前にキーを処理した時と比べて、初期化ロジックが終了したときに、マップに同じ値が含まれていることをどのように確認できますか? – SpaceTrucker