本技能用于规划 Roblox 中的数据持久化、跨服务器共享状态与配额感知的协调逻辑。它适合处理玩家存档、全局配置型记录、排行榜、临时跨服状态、多服务器协作等任务,并给出服务选型与实现规范。
主要能力
- 服务选型:在标准数据存储、有序数据存储、内存存储与消息服务之间做决策。
- 持久化设计:定义稳定 schema、版本字段、迁移时机,以及键与作用域的命名规范。
- 并发写入:说明何时使用 SetAsync、UpdateAsync、IncrementAsync 及版本 API,强调争用键优先使用 UpdateAsync,回调保持确定性、不 yield,返回 nil 可中止无效更新。
- 内存存储:区分哈希映射(按键查找)、有序映射(排序与范围读取)和队列(领取并处理的工作流),并给出 TTL 与清理策略。
- 跨服消息:将 MessagingService 作为短时广播、唤醒与通知的协调层,而非权威记录来源。
- 配额与失败处理:将请求预算、限流、缓存行为纳入设计,使用 pcall 包裹网络调用,配合指数退避与抖动重试,并保持可重试操作的幂等性。
- 可观测性:关注请求量、限流、配额、内存用量与请求单元,借助仪表盘判断瓶颈来自全局配额、单键争用还是热点分区。
适用场景
- 玩家档案存档:每个玩家键保存一个自包含对象。
- 历史金币排行榜:有序数据存储,数值型排名。
- 匹配池:内存存储队列。
- 带排名的跨服拍卖板:内存存储有序映射。
- 以服务器 ID 为键的临时房间注册表:内存存储哈希映射。
- 跨服强制刷新缓存:消息通知后重新读取数据或内存存储。
使用方式
先判断状态类型:跨会话持久、临时但跨服、仅广播协调;再选择最窄的原语。持久键应包含 schema 版本字段,迁移放在加载时或加载后首次写入。设计读取时考虑 GetAsync 的短时本地缓存,避免跨服写入后立即读取。读取参考资料可分别查看数据存储指南、最佳实践、版本与缓存限制、内存存储指南与最佳实践、跨服消息及两类存储对比。
限制
本技能不覆盖远程事件安全、客户端到服务器校验、一般玩法网络、OAuth 与 API 密钥、Open Cloud 认证,以及数据服务之外的引擎 API 查询;遇到混合请求时只回答数据服务部分。混合场景可分别交由 roblox-networking、roblox-core 或 roblox-api 处理。