0

Spring Data Redis を使用しています。Redis SET に数百万の値がある場合、そのメンバーをフェッチすると ( members() 関数を使用しています)、ヒープに 100 万の値を持つ Java Set が作成されますか? それとも、値は必須としてフェッチされますか?

すべての値が一度に取得された場合、SET が巨大な場合、メモリ不足エラーがスローされますか? もしそうなら、どうすればそれを克服できますか?LISTZSETの range() についても同じ疑問があります。

4

2 に答える 2

1

SD Redis v 1.2 の実装にRedisSetは、遅延読み込みの実装はありません。

ただし、コマンドaddやなどのコマンドは、ローカル データに影響を与えることなく、サーバーで実行さremoveれている基になる操作に委任されます。RedisConnection

Using を使用すると、応答全体RedisSet.iterator()が実行SMEMBERSされてメモリに読み込まれますが、これはかなりの量のメモリを使用する可能性があります。

実装についてもList同様です。Maps

于 2014-05-19T12:54:24.323 に答える
0

ドキュメントでは遅延読み込みについては何も言及されていないため、セットのすべての要素が一度にフェッチされることを理解する必要があります。OutOfMemoryError巨大なセットがある場合、これは結果になります。

于 2014-05-19T07:47:20.963 に答える