GlobalDataStore
An object that exposes methods to access a single data store.
Memory category | Instances |
---|
Member index 6
Removed member index 4
History | Member | |
---|---|---|
452 | GetVersionAsync(key: string, version: string): Tuple | |
452 | ListKeysAsync(prefix: string = , pageSize: int = 0): Instance | |
452 | ListVersionsAsync(key: string, sortDirection: SortDirection = Ascending, minDate: int64 = 0, maxDate: int64 = 0, pageSize: int = 0): Instance | |
452 | RemoveVersionAsync(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
- 592 Change Parameters of GetAsync from (key: string) to (key: string, options: DataStoreGetOptions = DataStoreGetOptions)
- 483 Change Parameters of SetAsync from (key: string, value: Variant, userIds: Array = {}, options: Instance = Instance) to (key: string, value: Variant, userIds: Array = {}, options: DataStoreSetOptions = DataStoreSetOptions)
- 483 Change Parameters of IncrementAsync from (key: string, delta: int = 1, userIds: Array = {}, options: Instance = Instance) to (key: string, delta: int = 1, userIds: Array = {}, options: DataStoreIncrementOptions = DataStoreIncrementOptions)
- 462 Change ThreadSafety of UpdateAsync from to Unsafe
- 462 Change Parameters of SetAsync from (key: string, value: Variant, userids: Array = {}, options: Instance = Instance) to (key: string, value: Variant, userIds: Array = {}, options: Instance = Instance)
- 462 Change ThreadSafety of SetAsync from to Unsafe
- 462 Change ThreadSafety of RemoveAsync from to Unsafe
- 462 Change ThreadSafety of OnUpdate from to Unsafe
- 462 Change Parameters of IncrementAsync from (key: string, delta: int = 1, userids: Array = {}, options: Instance = Instance) to (key: string, delta: int = 1, userIds: Array = {}, options: Instance = Instance)
- 462 Change ThreadSafety of IncrementAsync from to Unsafe
- 462 Change ThreadSafety of GetAsync from to Unsafe
- 460 Change Parameters of SetAsync from (key: string, value: Variant, userids: Variant, options: Instance = Instance) to (key: string, value: Variant, userids: Array = {}, options: Instance = Instance)
- 460 Change Parameters of IncrementAsync from (key: string, delta: int = 1) to (key: string, delta: int = 1, userids: Array = {}, options: Instance = Instance)
- 459 Change ReturnType of SetAsync from void to Variant
- 459 Change Parameters of SetAsync from (key: string, value: Variant) to (key: string, value: Variant, userids: Variant, options: Instance = Instance)
- 459 Change ReturnType of RemoveAsync from Variant to Tuple
- 459 Change ReturnType of GetAsync from Variant to Tuple
- 458 Change ReturnType of SetAsync from Variant to void
- 458 Change Parameters of SetAsync from (key: string, value: Variant, userids: Variant, options: Instance = Instance) to (key: string, value: Variant)
- 458 Change ReturnType of RemoveAsync from Tuple to Variant
- 458 Change ReturnType of GetAsync from Tuple to Variant
- 459 Change ReturnType of SetAsync from void to Variant
- 459 Change Parameters of SetAsync from (key: string, value: Variant) to (key: string, value: Variant, userids: Variant, options: Instance = Instance)
- 459 Change ReturnType of RemoveAsync from Variant to Tuple
- 459 Change ReturnType of GetAsync from Variant to Tuple
- 452 Change ReturnType of SetAsync from string to void
- 452 Change Parameters of SetAsync from (key: string, value: Variant, userid: Variant, options: Instance = Instance) to (key: string, value: Variant)
- 452 Remove RemoveVersionAsync
- 452 Change ReturnType of RemoveAsync from Tuple to Variant
- 452 Remove ListVersionsAsync
- 452 Remove ListKeysAsync
- 452 Change ReturnType of IncrementAsync from Tuple to Variant
- 452 Remove GetVersionAsync
- 452 Change ReturnType of GetAsync from Tuple to Variant
- 453 Change Parameters of SetAsync from (key: string, value: Variant) to (key: string, value: Variant, userid: Variant, options: Instance = Instance)
- 453 Change ReturnType of SetAsync from void to string
- 453 Add RemoveVersionAsync
- 453 Change ReturnType of RemoveAsync from Variant to Tuple
- 453 Add ListVersionsAsync
- 453 Add ListKeysAsync
- 453 Change ReturnType of IncrementAsync from Variant to Tuple
- 453 Add GetVersionAsync
- 453 Change ReturnType of GetAsync from Variant to Tuple
- 404 Change Tags of OnUpdate from [] to [Deprecated]
- 313 Add RemoveAsync
- 128 Add UpdateAsync
- 128 Add SetAsync
- 128 Add OnUpdate
- 128 Add IncrementAsync
- 128 Add GetAsync
- 128 Add GlobalDataStore
Members 6
GetAsync
Parameters (2) | Default | |
---|---|---|
key | string | |
options | DataStoreGetOptions | DataStoreGetOptions |
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().
Thread safety | Unsafe |
---|
History 8
- 592 Change Parameters of GetAsync from (key: string) to (key: string, options: DataStoreGetOptions = DataStoreGetOptions)
- 462 Change ThreadSafety of GetAsync from to Unsafe
- 459 Change ReturnType of GetAsync from Variant to Tuple
- 458 Change ReturnType of GetAsync from Tuple to Variant
- 459 Change ReturnType of GetAsync from Variant to Tuple
- 452 Change ReturnType of GetAsync from Tuple to Variant
- 453 Change ReturnType of GetAsync from Variant to Tuple
- 128 Add GetAsync
IncrementAsync
Parameters (4) | Default | |
---|---|---|
key | string | |
delta | int | 1 |
userIds | Array | {} |
options | DataStoreIncrementOptions | DataStoreIncrementOptions |
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.
Thread safety | Unsafe |
---|
History 7
- 483 Change Parameters of IncrementAsync from (key: string, delta: int = 1, userIds: Array = {}, options: Instance = Instance) to (key: string, delta: int = 1, userIds: Array = {}, options: DataStoreIncrementOptions = DataStoreIncrementOptions)
- 462 Change Parameters of IncrementAsync from (key: string, delta: int = 1, userids: Array = {}, options: Instance = Instance) to (key: string, delta: int = 1, userIds: Array = {}, options: Instance = Instance)
- 462 Change ThreadSafety of IncrementAsync from to Unsafe
- 460 Change Parameters of IncrementAsync from (key: string, delta: int = 1) to (key: string, delta: int = 1, userids: Array = {}, options: Instance = Instance)
- 452 Change ReturnType of IncrementAsync from Tuple to Variant
- 453 Change ReturnType of IncrementAsync from Variant to Tuple
- 128 Add IncrementAsync
OnUpdate
Parameters (2) | ||
---|---|---|
key | string | |
callback | Function | |
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.
Thread safety | Unsafe |
---|
RemoveAsync
Parameters (1) | ||
---|---|---|
key | string | |
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.
Thread safety | Unsafe |
---|
History 7
- 462 Change ThreadSafety of RemoveAsync from to Unsafe
- 459 Change ReturnType of RemoveAsync from Variant to Tuple
- 458 Change ReturnType of RemoveAsync from Tuple to Variant
- 459 Change ReturnType of RemoveAsync from Variant to Tuple
- 452 Change ReturnType of RemoveAsync from Tuple to Variant
- 453 Change ReturnType of RemoveAsync from Variant to Tuple
- 313 Add RemoveAsync
SetAsync
Parameters (4) | Default | |
---|---|---|
key | string | |
value | Variant | |
userIds | Array | {} |
options | DataStoreSetOptions | DataStoreSetOptions |
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.
Thread safety | Unsafe |
---|
History 15
- 483 Change Parameters of SetAsync from (key: string, value: Variant, userIds: Array = {}, options: Instance = Instance) to (key: string, value: Variant, userIds: Array = {}, options: DataStoreSetOptions = DataStoreSetOptions)
- 462 Change Parameters of SetAsync from (key: string, value: Variant, userids: Array = {}, options: Instance = Instance) to (key: string, value: Variant, userIds: Array = {}, options: Instance = Instance)
- 462 Change ThreadSafety of SetAsync from to Unsafe
- 460 Change Parameters of SetAsync from (key: string, value: Variant, userids: Variant, options: Instance = Instance) to (key: string, value: Variant, userids: Array = {}, options: Instance = Instance)
- 459 Change ReturnType of SetAsync from void to Variant
- 459 Change Parameters of SetAsync from (key: string, value: Variant) to (key: string, value: Variant, userids: Variant, options: Instance = Instance)
- 458 Change ReturnType of SetAsync from Variant to void
- 458 Change Parameters of SetAsync from (key: string, value: Variant, userids: Variant, options: Instance = Instance) to (key: string, value: Variant)
- 459 Change ReturnType of SetAsync from void to Variant
- 459 Change Parameters of SetAsync from (key: string, value: Variant) to (key: string, value: Variant, userids: Variant, options: Instance = Instance)
- 452 Change ReturnType of SetAsync from string to void
- 452 Change Parameters of SetAsync from (key: string, value: Variant, userid: Variant, options: Instance = Instance) to (key: string, value: Variant)
- 453 Change Parameters of SetAsync from (key: string, value: Variant) to (key: string, value: Variant, userid: Variant, options: Instance = Instance)
- 453 Change ReturnType of SetAsync from void to string
- 128 Add SetAsync
UpdateAsync
Parameters (2) | ||
---|---|---|
key | string | |
transformFunction | Function | |
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().
Thread safety | Unsafe |
---|
History 2
- 462 Change ThreadSafety of UpdateAsync from to Unsafe
- 128 Add UpdateAsync
Removed members 4
GetVersionAsync
Parameters (2) | ||
---|---|---|
key | string | |
version | string | |
Returns (1) | ||
Tuple |
History 2
- 452 Remove GetVersionAsync
- 453 Add GetVersionAsync
ListKeysAsync
Parameters (2) | Default | |
---|---|---|
prefix | string | |
pageSize | int | 0 |
Returns (1) | ||
Instance |
History 2
- 452 Remove ListKeysAsync
- 453 Add ListKeysAsync
ListVersionsAsync
Parameters (5) | Default | |
---|---|---|
key | string | |
sortDirection | SortDirection | Ascending |
minDate | int64 | 0 |
maxDate | int64 | 0 |
pageSize | int | 0 |
Returns (1) | ||
Instance |
History 2
- 452 Remove ListVersionsAsync
- 453 Add ListVersionsAsync
RemoveVersionAsync
Parameters (2) | ||
---|---|---|
key | string | |
version | string | |
Returns (1) | ||
void |
History 2
- 452 Remove RemoveVersionAsync
- 453 Add RemoveVersionAsync