Reference API Roblox

Engine API

Website

Related

Reference API Roblox

GlobalDataStore

An object that exposes methods to access a single data store.

This class is not replicated. Its interface does not cross the network boundary.
This class is not creatable. Instances of this class cannot be created with Instance.new.
Tags: [NotCreatable, NotReplicated]

Member index 6

HistoryMember
592GetAsync(key: string, options: DataStoreGetOptions = DataStoreGetOptions): Tuple
483IncrementAsync(key: string, delta: int = 1, userIds: Array = {}, options: DataStoreIncrementOptions = DataStoreIncrementOptions): Variant
462OnUpdate(key: string, callback: Function): RBXScriptConnection
462RemoveAsync(key: string): Tuple
483SetAsync(key: string, value: Variant, userIds: Array = {}, options: DataStoreSetOptions = DataStoreSetOptions): Variant
462UpdateAsync(key: string, transformFunction: Function): Tuple
inherited from Instance
553Archivable: bool
635Capabilities: SecurityCapabilities
553Name: string
553Parent: Instance
635Sandboxed: bool
616UniqueId: UniqueId
576AddTag(tag: string): null
573ClearAllChildren(): null
462Clone(): Instance
573Destroy(): null
486FindFirstAncestor(name: string): Instance
486FindFirstAncestorOfClass(className: string): Instance
486FindFirstAncestorWhichIsA(className: string): Instance
486FindFirstChild(name: string, recursive: bool = false): Instance
486FindFirstChildOfClass(className: string): Instance
486FindFirstChildWhichIsA(className: string, recursive: bool = false): Instance
486FindFirstDescendant(name: string): Instance
563GetActor(): Actor
486GetAttribute(attribute: string): Variant
462GetAttributeChangedSignal(attribute: string): RBXScriptSignal
631GetAttributes(): Dictionary
648GetChildren(): Instances
462GetDebugId(scopeLength: int = 4): string
486GetDescendants(): Array
486GetFullName(): string
641GetStyled(name: string): Variant
576GetTags(): Array
576HasTag(tag: string): bool
486IsAncestorOf(descendant: Instance): bool
486IsDescendantOf(ancestor: Instance): bool
580IsPropertyModified(name: string): bool
573Remove(): null
576RemoveTag(tag: string): null
580ResetPropertyToDefault(name: string): null
573SetAttribute(attribute: string, value: Variant): null
462WaitForChild(childName: string, timeOut: double): Instance
648children(): Instances
553clone(): Instance
573destroy(): null
553findFirstChild(name: string, recursive: bool = false): Instance
648getChildren(): Instances
553isDescendantOf(ancestor: Instance): bool
573remove(): null
462AncestryChanged(child: Instance, parent: Instance)
462AttributeChanged(attribute: string)
462ChildAdded(child: Instance)
462ChildRemoved(child: Instance)
462DescendantAdded(descendant: Instance)
462DescendantRemoving(descendant: Instance)
500Destroying()
553childAdded(child: Instance)
inherited from Object
647ClassName: string
647className: string
647GetPropertyChangedSignal(property: string): RBXScriptSignal
647IsA(className: string): bool
650isA(className: string): bool
647Changed(property: string)

Removed member index 4

HistoryMember
452GetVersionAsync(key: string, version: string): Tuple
452ListKeysAsync(prefix: string = , pageSize: int = 0): Instance
452ListVersionsAsync(key: string, sortDirection: SortDirection = Ascending, minDate: int64 = 0, maxDate: int64 = 0, pageSize: int = 0): Instance
452RemoveVersionAsync(key: string, version: string): void

Description

A GlobalDataStore exposes functions for saving and loading data for the DataStoreService.

See Data Stores for an in-depth guide on data structure, management, error handling, etc.

Ordered data stores do not support versioning and metadata, so DataStoreKeyInfo is always nil for keys in an OrderedDataStore. If you need versioning and metadata support, use a DataStore.

History 51

Members 6

GetAsync

Parameters (2)Default
keystring
optionsDataStoreGetOptionsDataStoreGetOptions
Returns (1)
Tuple

This function returns the latest value of the provided key and a DataStoreKeyInfo instance. If the key does not exist or if the latest version has been marked as deleted, both return values will be nil.

Keys are cached locally for 4 seconds after the first read. A GlobalDataStore:GetAsync() call within these 4 seconds returns a value from the cache. Modifications to the key by GlobalDataStore:SetAsync() or GlobalDataStore:UpdateAsync() apply to the cache immediately and restart the 4 second timer.

To get a specific version, such as a version before the latest, use DataStore:GetVersionAsync().

This function yields. It will block the calling thread until completion.

History 8

Tags: [Yields]

IncrementAsync

Parameters (4)Default
keystring
deltaint1
userIdsArray{}
optionsDataStoreIncrementOptionsDataStoreIncrementOptions
Returns (1)
Variant

This function increments the value of a key by the provided amount (both must be integers).

OrderedDataStore does not support versioning, so calling this method on an OrderedDataStore key will overwrite the current value with the incremented value and make previous versions inaccessible.

This function yields. It will block the calling thread until completion.

History 7

Tags: [Yields]

OnUpdate

Parameters (2)
keystring
callbackFunction
Returns (1)
RBXScriptConnection

This function sets callback as the function to be run any time the value associated with the key changes. Once every minute, OnUpdate polls for changes by other servers. Changes made on the same server will run the function immediately. In other words, functions like IncrementAsync(), SetAsync(), and UpdateAsync() change the key's value in the data store and will cause the function to run.

It's recommended that you disconnect the connection when the subscription to the key is no longer needed.

This function is deprecated. It exists only for backward compatibility, and should not be used for new work.

History 3

Tags: [Deprecated]

RemoveAsync

Parameters (1)
keystring
Returns (1)
Tuple

This function marks the specified key as deleted by creating a new "tombstone" version of the key. Prior to this, it returns the latest version prior to the remove call.

After a key is removed via this function, GlobalDataStore:GetAsync() calls for the key will return nil. Older versions of the key remain accessible through DataStore:ListVersionsAsync() and DataStore:GetVersionAsync(), assuming they have not expired.

OrderedDataStore does not support versioning, so calling RemoveAsync() on an OrderedDataStore key will permanently delete it.

Removed objects will be deleted permanently after 30 days.

If the previous values were already deleted via GlobalDataStore:RemoveAsync() or DataStore:RemoveVersionAsync(), the function will return nil, nil for value and DataStoreKeyInfo respectively.

This function yields. It will block the calling thread until completion.

History 7

Tags: [Yields]

SetAsync

Parameters (4)Default
keystring
valueVariant
userIdsArray{}
optionsDataStoreSetOptionsDataStoreSetOptions
Returns (1)
Variant

This function sets the latest value, UserIds, and metadata for the given key.

Values in data stores are versioned, meaning GlobalDataStore:SetAsync() will create a new version every time it is called. Prior versions can be accessed through DataStore:ListVersionsAsync()/DataStore:GetVersionAsync() for up to 30 days at which point they are permanently deleted.

OrderedDataStore does not support versioning, so calling this method on an OrderedDataStore key will overwrite the current value and make previous versions inaccessible.

Metadata definitions must always be updated with a value, even if there are no changes to the current value; otherwise the current value will be lost.

Any string being stored in a data store must be valid UTF-8. In UTF-8, values greater than 127 are used exclusively for encoding multi-byte codepoints, so a single byte greater than 127 will not be valid UTF-8 and the GlobalDataStore:SetAsync() attempt will fail.

Set vs. Update

GlobalDataStore:SetAsync() is best for a quick update of a specific key, and it only counts against the write limit. However, it may cause data inconsistency if two servers attempt to set the same key at the same time. GlobalDataStore:UpdateAsync() is safer for handling multi-server attempts because it reads the current key value (from whatever server last updated it) before making any changes. However, it's somewhat slower because it reads before it writes, and it also counts against both the read and write limit.

This function yields. It will block the calling thread until completion.

History 15

Tags: [Yields]

UpdateAsync

Parameters (2)
keystring
transformFunctionFunction
Returns (1)
Tuple

This function retrieves the value and metadata of a key from the data store and updates it with a new value determined by the callback function specified through the second parameter. If the callback returns nil, the write operation is cancelled and the value remains unchanged.

If the update succeeds, a new version of the value will be created and prior versions will remain accessible through DataStore:ListVersionsAsync() and DataStore:GetVersionAsync().

OrderedDataStore does not support versioning, so calling this function on an OrderedDataStore key will overwrite the current value and make previous versions inaccessible.

In cases where another game server updated the key in the short timespan between retrieving the key's current value and setting the key's value, GlobalDataStore:UpdateAsync() will call the function again, discarding the result of the previous call. The function will be called as many times as needed until the data is saved or until the callback function returns nil. This can be used to ensure that no data is overwritten.

Any string being stored in a data store must be valid UTF-8. In UTF-8, values greater than 127 are used exclusively for encoding multi-byte codepoints, so a single byte greater than 127 will not be valid UTF-8 and the GlobalDataStore:UpdateAsync() attempt will fail.

Set vs. Update

GlobalDataStore:SetAsync() is best for a quick update of a specific key, and it only counts against the write limit. However, it may cause data inconsistency if two servers attempt to set the same key at the same time. GlobalDataStore:UpdateAsync() is safer for handling multi-server attempts because it reads the current key value (from whatever server last updated it) before making any changes. However, it's somewhat slower because it reads before it writes, and it also counts against both the read and write limit.

Callback Function

The callback function accepts two arguments:

  • Current value of the key prior to the update.
  • DataStoreKeyInfo instance that contains the latest version information (this argument can be ignored if metadata is not being used).

In turn, the callback function returns up to three values:

  • The new value to set for the key.
  • An array of UserIds to associate with the key. DataStoreKeyInfo:GetUserIds() should be returned unless the existing IDs are being changed; otherwise all existing IDs will be cleared.
  • A Lua table containing metadata to associate with the key. DataStoreKeyInfo:GetMetadata() should be returned unless the existing metadata is being changed; otherwise all existing metadata will be cleared.

If the callback returns nil instead, the current server will stop attempting to update the key.

The callback function cannot yield, so do not include calls like task.wait().

This function yields. It will block the calling thread until completion.

History 2

Tags: [Yields]

Removed members 4

GetVersionAsync

Parameters (2)
keystring
versionstring
Returns (1)
Tuple
This function yields. It will block the calling thread until completion.

History 2

Tags: [Yields]

ListKeysAsync

Parameters (2)Default
prefixstring
pageSizeint0
Returns (1)
Instance
This function yields. It will block the calling thread until completion.

History 2

Tags: [Yields]

ListVersionsAsync

Parameters (5)Default
keystring
sortDirectionSortDirectionAscending
minDateint640
maxDateint640
pageSizeint0
Returns (1)
Instance
This function yields. It will block the calling thread until completion.

History 2

Tags: [Yields]

RemoveVersionAsync

Parameters (2)
keystring
versionstring
Returns (1)
void
This function yields. It will block the calling thread until completion.

History 2

Tags: [Yields]

Settings