object_store_memory 和 redis_max_memory 有什么关系?

How do object_store_memory and redis_max_memory relate?

我不认为我完全理解 object_store_memory 和 redis_max_memory 之间的关系。我一开始以为是redis db保存了内存中的所有对象,但是对象存储的大小怎么才能大于redis_max_memory大小呢?或者它的某些部分写入磁盘? RAM 是如何消耗的?是RAM_CONSUMED = object_store_memory + redis_max_memory,还是它的并集?

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

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