GridCache.keySet()
、.primarySize()
、および.size()
そのノードの情報のみを返します。
これらの情報をクラスター全体で取得するにはどうすればよいですか?
クラスター全体のスキャンは「機能」しますが、必要なのは値ではなくキーまたはカウントだけです。
問題は、インデックス付きフィールドに基づいて検索したい場合に SQL クエリが機能することですが、グリッド キャッシュ エントリ キー自体に基づいて検索することはできません。
機能しますが、エレガントでパフォーマンスにはほど遠い私の回避策は次のとおりです。
Set<String> ruleIds = FluentIterable.from(cache.queries().createSqlFieldsQuery("SELECT property FROM YagoRule").execute().get())
.<String>transform((it) -> (String) it.iterator().next()).toSet();
これには、キーがフィールドの 1 つと同じである必要があり、パフォーマンス上の理由からフィールドにインデックスを付ける必要があります。