3

我不认为我完全理解 object_store_memory 和 redis_max_memory 之间的关系。我最初认为 redis db 将所有对象都保存在内存中,但是如何使对象存储大小大于 redis_max_memory 大小?或者它的某些部分是否写入磁盘?RAM是如何消耗的?是 RAM_CONSUMED = object_store_memory + redis_max_memory,还是它的并集?

4

1 回答 1

4

redis 数据库只保存关于对象和任务的元数据(即对于任务:任务依赖于哪些对象以及它产生的输出的 ID,需要运行哪个函数来产生输出;对于对象:在哪个节点上)在集群中是存储的对象)。限制此数据库的redis_max_memory大小,旧条目以 LRU 方式丢弃。

实际数据存储在共享内存对象存储中(请参阅https://arrow.apache.org/docs/python/plasma.html),其大小由object_store_memory. 同样,当前未映射到任何工作内存的旧对象将从那里按 LRU 顺序被驱逐。通过提供plasma_directory 参数,也可以使用磁盘备份对象存储。这允许对象存储大于 RAM 的大小,但也会使对象存储变慢,具体取决于磁盘大小和缓冲区缓存的数量。

所以是的RAM_CONSUMED = object_store_memory + redis_max_memory,除非您通过磁盘备份对象存储,在这种情况下RAM_CONSUMED = redis_max_memory

如果您有更多问题,请告诉我。

于 2019-06-18T22:01:39.920 回答