数据处理 / DataStorage
DataStorage Class  
数据存储
Precautions
在调用DataStorage相关接口时,每一个Key的对应值在数据服务器的读取和修改都有频率限制,主要表现在:接口调用时至一分钟前的时间区间内,某个Key的对应值在后端数据服务器上被获取Get、改写Set、删除Remove的总次数不能超过 (60+游戏设定的最大人数×10)次,不管它是在哪个服务器被操作的;如果时间区间内超限,请求会失败,然后Set、Remove会返回 FREQUENCY_OVERRUN(操作失败:请求频率超限) 而Get会catch到error timeout。
- 这些限制是数据服务器层面针对单个Key来的,每个Key之间的限制互相独立,和游戏服务器无关。
 - Player相关的接口其实也算是一个Key,只不过是和玩家信息强相关的Key,也会受到上述限制;建议用 asyncSetData(属性名+玩家id+其他描述, 要存的值)来分存玩家相关的需要经常存取数据,以免堵塞。
 - 对于玩家相关的信息,建议在ts层建立数据缓存,进行一定的数据托管;即通过ts脚本逻辑让DS服务器临时缓存玩家数据,只在初始化的时候进行get,在离线或其他必要时set,以减轻对后端数据服务器的压力,保证稳定性
 
Table of contents 
Methods  
asyncGetData(key: string): Promise<DataStorageResult> server | 
|---|
| 异步获取自定义数据 | 
asyncGetLocalData(key: string): Promise<DataStorageResult> client | 
| 获取本地数据 | 
asyncGetOtherGameData(gameId: string, key: string): Promise<DataStorageResult> server | 
| 异步获取其他游戏保存的数据 | 
asyncRemoveData(key: string): Promise<DataStorageResultCode> server | 
| 异步删除自定义数据 | 
asyncRemoveLocalData(key: string): Promise<DataStorageResultCode> client | 
| 删除本地数据 | 
asyncSetData(key: string, value: any): Promise<DataStorageResultCode> server | 
| 异步设置自定义数据 | 
asyncSetLocalData(key: string, value: any): Promise<DataStorageResultCode> client | 
| 设置本地数据 | 
asyncSetOtherGameData(gameId: string, key: string, value: any): Promise<DataStorageResultCode> server | 
| 异步设置其他游戏保存的数据 | 
getDataSize(data: any): number | 
| 返回data的当前大小。单位为byte(字节)。 | 
Methods 
asyncGetData  
• Static asyncGetData(key): Promise<DataStorageResult> server
异步获取自定义数据
Parameters 
key string | 字符串类型键,用来查找唯一标识存储的数据  range: 字符串长度依据 asyncSetData 设置的而定。  | 
|---|
Returns 
Promise<DataStorageResult> | 之前保存的自定义数据 | 
|---|
asyncGetLocalData  
• Static asyncGetLocalData(key): Promise<DataStorageResult> client
获取本地数据
Parameters 
key string | 字符串类型的键,用来唯一标识存储的数据。 range: 字符串长度不做限制,但请设置合适的标识。  | 
|---|
Returns 
Promise<DataStorageResult> | 数据获取结果 | 
|---|
asyncGetOtherGameData  
• Static asyncGetOtherGameData(gameId, key): Promise<DataStorageResult> server
异步获取其他游戏保存的数据
Parameters 
gameId string | 开发者后台其他游戏的 gameId。 range: 字符串长度依据 gameId 长度而定。  | 
|---|---|
key string | 字符串类型键,用来查找唯一标识存储的数据。  range: 字符串长度依据设置长度而定。  | 
Returns 
Promise<DataStorageResult> | 其他游戏保存的数据 | 
|---|
asyncRemoveData  
• Static asyncRemoveData(key): Promise<DataStorageResultCode> server
异步删除自定义数据
Parameters 
key string | 字符串类型键,用来查找唯一标识存储的数据  range: 字符串长度依据 asyncSetData 设置的而定。  | 
|---|
Returns 
Promise<DataStorageResultCode> | 数据删除状态 | 
|---|
asyncRemoveLocalData  
• Static asyncRemoveLocalData(key): Promise<DataStorageResultCode> client
删除本地数据
Parameters 
key string | 字符串类型的键,用来唯一标识存储的数据。 range: 字符串长度不做限制,但请设置合适的标识。  | 
|---|
Returns 
Promise<DataStorageResultCode> | 数据删除状态 | 
|---|
asyncSetData  
• Static asyncSetData(key, value): Promise<DataStorageResultCode> server
异步设置自定义数据
Parameters 
key string | 字符串类型的键,用来唯一标识存储的数据。 range: 字符串长度不做限制,但请设置合适的标识。  | 
|---|---|
value any | 要保存的数据,不支持 map 类型及数据结构中包含 map,且无法还原 function | 
Returns 
Promise<DataStorageResultCode> | 数据储存状态 | 
|---|
asyncSetLocalData  
• Static asyncSetLocalData(key, value): Promise<DataStorageResultCode> client
设置本地数据
Parameters 
key string | 字符串类型的键,用来唯一标识存储的数据。 range: 字符串长度不做限制,但请设置合适的标识。  | 
|---|---|
value any | 要保存的数据,不支持 map 类型及数据结构中包含 map,且无法还原 function | 
Returns 
Promise<DataStorageResultCode> | 数据储存状态 | 
|---|
Precautions
每条数据最多存储64kb的编码数据且本地存储的总数据大小不可以超过5mb,超过此限制的数据都不能被存储。
asyncSetOtherGameData  
• Static asyncSetOtherGameData(gameId, key, value): Promise<DataStorageResultCode> server
异步设置其他游戏保存的数据
Parameters 
gameId string | 开发者后台其他游戏的 gameId  range: 字符串长度依据 gameId 长度而定。  | 
|---|---|
key string | 字符串类型键,用来查找唯一标识存储的数据  range: 字符串长度依据设置长度而定。  | 
value any | 要保存的数据,不支持 map 类型及数据结构中包含 map,且无法还原 function | 
Returns 
Promise<DataStorageResultCode> | 设置其他游戏的数据状态码 | 
|---|
getDataSize  
• Static getDataSize(data): number
返回data的当前大小。单位为byte(字节)。
Parameters 
data any | 数据键值对对象。 | 
|---|
Returns 
number | 数据大小 | 
|---|