分区和数据分配

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

在释放 MemoryStoreHashMap 数据结构的情况下,Roblox 移除了个人数据结构的所有现有限制,并将其替换为单个、全球的“每个分区”限制。准确限制根据内部值和自动分割过程如何分配数据来变化,但一般在限制之前允许使用率大幅提高,特别是对于哈希地图。这个新限制可以在所有数据结构中灵活使用内存存储。

分区

MemoryStores API 在 分区上 存储数据,这仅仅是存储的分支。每当你将物品写入内存存商店时,该物品将存储在一个准确的分区上。分区由 MemoryStores API 完全管理;您不需要自己管理它们。

分区分配

分区存储与物品存储在的数据结构不同。对于排序的地图和队列,每个数据结构都分配一个单独的分区。

例如,考虑一个排序的地图叫做 PlayerScores 并有队列叫做 PlayerLine 等待玩游戏的玩家:

与排序的地图和队列不同,哈希地图被分配多个分区,数据自动分布在这些分区上。如果你添加了一个名为 Prizes 的哈希地图,分区可能会看起来像这样:

注意如何在所有分区上存在哈希地图,每个分区都有一些子集的项目。

限制

拥有每个分区限制可以提高所有数据结构的吞吐量。它还喜欢哈希地图,因为它们分布在所有分区。

例如,考虑每个分区的限制为每分钟 150,000 个请求(RPM):

  • 在最好的情况下,排序的地图和队列的限制为 150,000 RPM,因为每个都位于单个分区上。
  • 对哈希地图的请求分布在物品键上,这些键本身分布在分区上,因此哈希地图在限制前可以拥有更高的有效限制,比其他数据结构多数倍。

因此,如果您不需要排序或“先进先出”功能,哈希地图通常是内存存储数据结构的最佳选择。了解更多信息,请参阅最佳实践