Roblox 提供了几种数据存储选项。每种存储选项都有其优缺点,并适用于不同的用例。下表总结了可用的选项,并提供了与标准 Web 服务的最接近比较点。
| 服务 | 持久性 | 范围 | 游戏内访问 | 云比较 |
|---|---|---|---|---|
| 数据存储 | 永久 | 跨服务器 | 读写 | NoSQL 数据库 |
| 内存存储 | 最长 45 天 | 跨服务器 | 读写 | 内存缓存 |
| 配置 | 永久 | 跨服务器 | 只读 | 应用配置和功能标志 |
| 秘密存储 | 永久 | 跨服务器 | 只读 | 秘密管理 |
| Luau 内存 | 会话持续时间 | 单服务器 | 读写 | 服务器 RAM |
何时使用数据存储
DataStoreService 用于存储需要在会话之间保留的长期数据,如用户进度或物品库存。数据存储在每个游戏中都是一致的,因此游戏内每个地点的每个服务器都可以访问和更改相同的数据。数据存储有两种类型:标准和有序。
标准数据存储 可以存储像数字、字符串和不需要排名或排序的表格数据。它们以键值对的形式存储数据;每个条目存储在其数据存储下唯一的键中,您可以检索、更新或删除。有关更多信息,请参见 数据存储。
有序数据存储 只能存储数字。每个条目存储在其数据存储下唯一的键中,您可以检索、更新或删除。您可以对这些数据进行数值排名和排序,并根据存储的数值按升序或降序检索它。有关更多信息,请参见 有序数据存储。
| 标准数据存储 | 有序数据存储 | |
|---|---|---|
| 数据类型 | 数字、字符串、布尔值和表格。 | 仅限数字。 |
| 常见用例 | 用户进度、物品库存和游戏设置。 | 所有时间的持久性排名系统和排行榜。与内存存储中的排行榜不同,此排行榜数据是永久的。 |
| 过去版本备份 | 自动管理数据的先前版本,持续 30 天。 | 不管理数据的先前版本。 |
何时使用内存存储
MemoryStoreService 是一种高吞吐量和低延迟的服务,用于存储需要频繁更新或访问的临时数据,如全球排行榜或匹配队列。使用内存存储,游戏内每个地点的每个服务器都可以快速频繁地访问和更改相同的数据。内存存储中的数据在一定的时间后过期,最长为 45 天。
如果您需要快速读取(而不是写入)跨所有服务器的小数量值,配置 是更好的选择。使用内存存储在频繁访问单个键或分区时的性能不如配置。
尽管内存存储存储临时数据,但它们也支持诸如全球市场等永久功能。市场是永久的,但内部待售的物品有到期日期。
| 内存存储 | |
|---|---|
| 数据类型 | 数字、字符串、布尔值和不需要超过 45 天的持续时间的表格。 |
| 常见用例 | 基于技能的匹配,多人游戏的匹配状态。 |
| 每日和每月排行榜。 |
何时使用配置
配置 允许您进行实时更新游戏内变量,而无需重启服务器。它们非常适合功能标志以及您希望随着时间推移进行调整或实验的任何游戏内值。
- 配置在游戏内是只读的—您需要在创建者中心或 Roblox Studio 中对其进行修改—因此它们不适用于数据存储和内存存储的相同用例。
- 配置的更改在五分钟内部署;数据和内存存储的更改更为瞬时。
| 配置 | |
|---|---|
| 数据类型 | 数字、字符串、布尔值和 JSON 对象。 |
| 常见用例 | 启用新地下城,禁用限时游戏模式,开始节日活动。 |
| 敌人生命值、武器伤害、物品价格、游戏倍增器、欢迎消息。 |
何时使用秘密存储
使用 秘密存储 为您的游戏存储任何 API 密钥、密码和用于与外部服务身份验证的访问令牌。将这些值存储在数据存储中会带来不必要的安全风险。
| 秘密存储 | |
|---|---|
| 数据类型 | 字符串。 |
| 常见用例 | 用于分析或音乐服务的 API 密钥、密码和访问令牌。 |
何时在 Luau 中使用内存存储
在 Luau 中使用内存存储来存储需要以最小延迟访问的临时数据,而无需调用外部服务的成本。此存储内置于 Luau 中,无需设置。
| Luau 中的内存存储 | |
|---|---|
| 数据类型 | 数字、字符串、布尔值和表格。 |
| 常见用例 | 仅与单个服务器会话相关,不需要持续存在的数据,如状态效果或用户离开游戏时重置的临时积分。 |
| 频繁变化的值,如计数器、计时器、状态标志或生命值条。 | |
| 驱动游戏逻辑的数据,需要即时访问,如临时变量或敌人的当前生命值。 |