一个 全球数据存储 暴露功能,用于保存和加载数据给 DataStoreService .
请参阅数据存储获取有关数据结构、管理、错误处理等方面的详尽指南
订阅数据存储不支持版本和元数据,因此 DataStoreKeyInfo 永远是 nil 对于 OrderedDataStore 中的键。如果需要版本控制和元数据协助,请使用 DataStore 。
概要
方法
返回指定数据存储中的键值和 DataStoreKeyInfo 实例。
- IncrementAsync(key : string,delta : number,userIds : Array,options : DataStoreIncrementOptions):Variant
将钥匙的值增加所提供的数量(两者都必须是整数)。
移除指定的键,同时保留可访问的版本。
设置数据存储的值为给定的键。
使用指定的回调函数的新值更新钥键的值。
属性
方法
GetAsync
该函数返回提供的键的最新值和一个 DataStoreKeyInfo 实例。如果键不存在或最新版本被标记为删除,两个返回值都将为 nil 。
钥匙在第一次阅已读后的 4 秒内本地缓存。在这些 4 秒内的一个 GlobalDataStore:GetAsync() 调用返回了缓存的值。由 GlobalDataStore:SetAsync() 或 GlobalDataStore:UpdateAsync() 对键的修改立即适用于缓存,并重启 4 秒计时器。
要获取特定版本,例如最新版本之前的版本,请使用 DataStore:GetVersionAsync() 。
参数
值被请求的键名。如果 DataStoreOptions.AllScopes 通过 DataStoreService:GetDataStore() 访问数据存储时设置为真实,此键名必须与原始范围一样,即"scope/key"。
返回
数据存储中的入口值与给定的键和包含版本号、创建日期和时间的 DataStoreKeyInfo 实例,以及用于检索 UserIds 和元数据的函数。
IncrementAsync
这个函数将提供的数量增加到钥匙的值(两者都必须是整数)。
在 GlobalDataStores 中的值被视为 版本化 ,如同在 版本化 中所述。OrderedDataStores不支持版本控制,因此调用此方法在订阅数据存储键上将覆盖当前值与增量值并使以前的版本无法访问。
参数
值应更新的关键名称。如果 DataStoreOptions.AllScopes 通过 DataStoreService:GetDataStore() 访问数据存储时设置为真实,此键名必须与原始范围一样,即"scope/key"。
用于增加当前值的数量。
(可选) 结合多个额外参数作为自定义元数据的实例,可以实现未来的扩展。
返回
与给定键的数据存储中的入口的更新值。
RemoveAsync
这个函数标记指定的键为删除,通过创建新的“墓碑”版本的键。在此之前,它返回了移除调用之前的最新版本。
通过此函数移除键后, GlobalDataStore:GetAsync() 调用键将返回 nil .较旧版本的密钥仍然可以通过 DataStore:ListVersionsAsync() 和 DataStore:GetVersionAsync() 访问,假设它们没有过期。
OrderedDataStore 不支持版本控制,因此调用 RemoveAsync() 对 OrderedDataStore 键会永久删除它。
移除的对象将在 30 天后永久删除。
如果以前的值已通过 GlobalDataStore:RemoveAsync() 或 DataStore:RemoveVersionAsync() 被删除,函数将返回 nil 、nil 和 DataStoreKeyInfo 分别用于值和值。
参数
要删除的键名称。如果 DataStoreOptions.AllScopes 通过 DataStoreService:GetDataStore() 访问数据存储时设置为真实,此键名必须与原始范围一样,即"scope/key"。
返回
数据存储在删除前的值和包含版本号、创建日期和时间的 DataStoreKeyInfo 实例,以及用于检索 UserIds 和元数据的函数。
SetAsync
这个函数设置最新值,UserIds,以及给定键的元数据。
在 GlobalDataStores 中的值被视为 版本化 ,如同在 版本化 中所述。OrderedDataStores 不支持版本管理,因此调用此方法在订阅数据存储键上会覆盖当前值并使以前的版本无法访问。
元数据定义必须始终以值更新,即使没有更改当前值;否则当前值将丢失。
存储在数据存储中的任何字符串必须有效 UTF-8 .在 UTF-8 中,超过 127 的值仅用于编码多字节代码点,因此超过 127 的单个字符不会是有效的 UTF-8,尝试 GlobalDataStore:SetAsync() 将失败。
设置与更新
GlobalDataStore:SetAsync() 最适合快速更新特定键,仅计算对写入限制。然而,如果两个服务器同时尝试设置相同的键,可能会导致数据不一致。GlobalDataStore:UpdateAsync() 更安全地处理多服务器请求,因为它在进行任何更改之前都会阅读当前键值(从最后更新的任何服务器)。但是,它的速度有点慢,因为它先读,然后也计算对读写限制的影响。
参数
值应设置到哪个键名上。如果 DataStoreOptions.AllScopes 通过 DataStoreService:GetDataStore() 访问数据存储时设置为真实,此键名必须与原始范围一样,即"scope/key"。
数据存储钥匙将设置为的值。
(可选) 允许在键上指定元数据规格的实例。
返回
新创建版本的版本标识符。它可以用 GetVersionAsync() 来检索关键信息,或用 RemoveVersionAsync() 来删除它。
UpdateAsync
此函数从数据存储中检索钥的值和元数据,并将其更新为由调用函数通过第二个参数指定的新值。如果回调返回 nil,写入操作将被取消,值仍然不变。
在 GlobalDataStores 中的值被视为 版本化 ,如同在 版本化 中所述。OrderedDataStores 不支持版本管理,因此调用此方法在订阅数据存储键上会覆盖当前值并使以前的版本无法访问。
在另一个游戏服务器在恢复键的当前值和设置键的值之间的短时间内更新键的情况下,GlobalDataStore:UpdateAsync() 将再次调用函数,丢弃前一次调用的结果。函数将被调用尽可能多的次数,直到数据被保存 或 直到回调函数返回 nil 。这可用于确保没有数据被覆盖。
存储在数据存储中的任何字符串必须有效 UTF-8 .在 UTF-8 中,超过 127 的值仅用于编码多字节代码点,因此超过 127 的单个字符不会是有效的 UTF-8,尝试 GlobalDataStore:UpdateAsync() 将失败。
设置与更新
GlobalDataStore:SetAsync() 最适合快速更新特定键,仅计算对写入限制。然而,如果两个服务器同时尝试设置相同的键,可能会导致数据不一致。GlobalDataStore:UpdateAsync() 更安全地处理多服务器请求,因为它在进行任何更改之前都会阅读当前键值(从最后更新的任何服务器)。但是,它的速度有点慢,因为它先读,然后也计算对读写限制的影响。
回调函数
回调函数接受两个参数:
- 升更新前键的当前值。
- DataStoreKeyInfo 包含最新版本信息的实例(如果元数据不被使用,此参数可以忽略)。
反过来,回调函数返回最多三个值:
- 为键设置的新值。
- 一个与键相关的 UserIds 阵列DataStoreKeyInfo:GetUserIds()应返回,除非现有ID被更改;否则所有现有ID将被清除。
- 包含与键关联的元数据的 Luau 表。DataStoreKeyInfo:GetMetadata() 应返回,除非现有元数据正在被更改;否则,所有现有元数据都将被清除。
如果回调返回 nil 而不是更新键,当前服务器将停止尝试更新键。
回调函数无法返回,因此 不 包含像 task.wait() 这样的调用。
参数
值应更新的关键名称。如果 DataStoreOptions.AllScopes 通过 DataStoreService:GetDataStore() 访问数据存储时设置为真实,此键名必须与原始范围一样,即"scope/key"。
转换函数,将当前值和 DataStoreKeyInfo 作为参数,返回新值以及可选的 UserIds 和元数据。
返回
数据存储库中以给定的键和包含版本号、创建日期和时间的版本的 DataStoreKeyInfo 实例更新值,以及用于检索 UserIds 和元数据的函数。