0

我正在使用 Spring Data Redis。如果 Redis SET 有数百万个值,那么获取它的成员(使用members() 函数)会在堆中创建一个具有一百万个值的 Java 集吗?还是仅按要求获取值?

如果一次性获取所有值,如果 SET 很大,它会抛出一些内存不足错误吗?如果是这样,我该如何克服呢?我对LISTZSET的 range() 也有同样的疑问。

4

2 回答 2

1

SD Redis v 1.2 实现RedisSet没有延迟加载实现。

但是类似add和的命令remove被委托给RedisConnection服务器上的底层执行操作,而不影响任何本地数据。

usingRedisSet.iterator()将执行SMEMBERS并将整个响应加载到内存中,这可能会使用相当多的内存。

List和实现也是如此Maps

于 2014-05-19T12:54:24.323 回答
0

文档没有提到任何关于延迟加载的内容,因此应该理解,集合的所有元素都是一次获取的。OutOfMemoryError如果你有大量的集合,这将导致。

于 2014-05-19T07:47:20.963 回答