MemoryStoreQueue

Show Deprecated
Not Creatable
Not Replicated

Provides access to a queue within MemoryStore. A queue is a data structure that provides temporary storage for arbitrary items (up to the maximum item size; see MemoryStore Limits. Each queue item has a numeric priority: MemoryStore retrieves items with higher priority from the queue first, and it retrieves Items with the same priority in order of addition.

Items in the queue can optionally be set to expire after a certain amount of time. Expired items simply disappear from the queue as if they were never added.

Summary

Properties

Events

Methods

AddAsync(value: Variant, expiration: number, priority: number): void  YIELDS

Adds an item to the queue.

ReadAsync(count: number, allOrNothing: boolean, waitTimeout: number): Tuple  YIELDS

Reads one or more items from the queue.

RemoveAsync(id: string): void  YIELDS

Removes an item or items previously read from the queue.

Properties

Events

Methods

AddAsync

void
Yields

Adds an item to the queue.

Parameters

value: Variant

The value of the item to add to the queue.

expiration: number

Item expiration time, in seconds, after which the item will be automatically removed from the queue.

priority: number

Item priority. Items with higher priority are retrieved from the queue before items with lower priority.

Default Value: "0"

Returns

void

No return.

ReadAsync

Yields

Reads one or more items from the queue as a single atomic operation.

This method does not automatically delete the returned items from the queue but makes them invisible to other ReadAsync calls for the period of the invisibility timeout. The items must be explicitly removed from the queue with MemoryStoreQueue:RemoveAsync() before the invisibility timeout expires. The invisibility timeout defaults to 30 seconds unless a different value was provided in MemoryStoreService:GetQueue().

Parameters

count: number

Number of items to read. The maximum allowed value of this parameter is 100.

allOrNothing: boolean

Controls the behavior of the method in the case the queue has fewer than count items: if set to false the method returns all available items; if set to true, it returns no items. The default value is false.

Default Value: "false"
waitTimeout: number

The duration, in seconds, for which the method will wait if the required number of items is not immediately available in the queue. This parameter can be set to zero to indicate no wait. If this parameter is not provided or set to -1, the method will wait indefinitely.

Default Value: "-1"

Returns

A tuple of two elements. The first element is an array of item values read from the queue. The second element is a string identifier that should be passed to MemoryStoreQueue:RemoveAsync() to permanently remove these items from the queue.

Code Samples

Using a MemoryStoreQueue

1local MemoryStoreService = game:GetService("MemoryStoreService")
2local DataStoreService = game:GetService("DataStoreService")
3
4local queue = MemoryStoreService:GetQueue("PlayerQueue")
5local dataStore = DataStoreService:GetDataStore("PlayerStore")
6
7while true do
8 pcall(function()
9 -- wait for an item to process
10 local items, id = queue:ReadAsync(1, false, 30)
11
12 -- check if an item was retrieved
13 if #items > 0 then
14 -- mark the item as processed
15 dataStore:UpdateAsync(items[0], function(data)
16 data = data or {}
17 data.processed = 1
18 return data
19 end)
20
21 -- remove the item from the queue
22 queue:RemoveAsync(id)
23 end
24 end)
25end

RemoveAsync

void
Yields

Removes an item or items previously read from the queue. This method uses the identifier returned by MemoryStoreQueue:ReadAsync() to identify the items to remove. If called after the invisibility timeout has expired, the call has no effect.

Parameters

id: string

Identifies the items to delete. Use the value returned by MemoryStoreQueue:ReadAsync().


Returns

void

No returns.

Code Samples

Using a MemoryStoreQueue

1local MemoryStoreService = game:GetService("MemoryStoreService")
2local DataStoreService = game:GetService("DataStoreService")
3
4local queue = MemoryStoreService:GetQueue("PlayerQueue")
5local dataStore = DataStoreService:GetDataStore("PlayerStore")
6
7while true do
8 pcall(function()
9 -- wait for an item to process
10 local items, id = queue:ReadAsync(1, false, 30)
11
12 -- check if an item was retrieved
13 if #items > 0 then
14 -- mark the item as processed
15 dataStore:UpdateAsync(items[0], function(data)
16 data = data or {}
17 data.processed = 1
18 return data
19 end)
20
21 -- remove the item from the queue
22 queue:RemoveAsync(id)
23 end
24 end)
25end