Roblox Server & Shared Data
When to Load
Load for server-level or cross-server data: leaderboards (OrderedDataStore), cross-server messaging (MessagingService), queues and sorted maps (MemoryStoreService), shared world state, non-player persistence, season or guild data. For player data, use roblox-data; for Open Cloud, use roblox-cloud.
Quick Reference
OrderedDataStore (Leaderboards)
- Sortable DataStore. Keys are strings (
tostring(UserId)); values are integers used for sorting. GetSortedAsync(ascending, pageSize, minValue, maxValue)→ sorted pagesBatchGetAsync(keys): multi-key read, ordered stores only; missing keys are omitted- Budget: poll
GetRequestBudgetForRequestType(OrderedWrite)before bursts (per server: 30 + numPlayers x 5 writes/min) - For leaderboards only, never for player saves
- Keep the user ID a static substring in keys (
player_<UserId>) so RTBF templates match; hashed keys make erasure manual
MessagingService (Cross-Server)
SubscribeAsync/PublishAsync; no delivery or ordering guarantee, so design for idempotency.
GlobalDataStore (Shared State)
- Persistent non-player state (guilds, seasons, counters). Use
UpdateAsync; never for player session data.
MemoryStoreService (Temporary Coordination)
- Queues and sorted maps for expiring matchmaking, leases, coordination.
- Remove a read batch only after successful, idempotent processing.
Cross-Server Patterns
- Register servers with expiring heartbeats; use MessagingService for notifications.
User Identity
- New code identifies users with
player.User(User.Id,DomainType,DomainId);UserIdstays valid. Domain IDs are per-experience, so keep cross-server keys onUserIdand never mix the two.
Pitfalls
- MessagingService: fire-and-forget, unordered, cross-server latency; not for time-critical work
- GlobalDataStore: same rate limits as player DataStores
- Never store Instances; serialize to primitives first
SetAsyncoverwrites without reading; useUpdateAsyncfor shared counters
Need more detail? Load references/full.md for the complete reference with code examples, API tables, and edge cases.