MemoryStoreQueue

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Non costruibile
Non Replicato

Fornisce accesso a una coda all'interno di MemoryStore. Una coda è una struttura di dati che fornisce uno storage temporaneo per oggetti casuali (vedi Limiti di MemoryStore). Ogni oggetto della coda ha una priorità numerica: il MemoryStore recupera gli oggetti con una priorità più alta prima, e li recupera gli oggetti con la stessa priorità in ordine di aggiunta.

Gli elementi nella coda possono essere impostati opzionalmente per scadere dopo un certo periodo di tempo. Gli elementi scaduti semplicemente scompaiono dalla coda come se non fossero mai stati aggiunti.

Sommario

Metodi

Proprietà

Metodi

AddAsync

void
Resa

Aggiunge un elemento alla coda.

Parametri

value: Variant

Il valore dell'elemento da aggiungere alla coda.

expiration: number

Tempo di scadenza dell'elemento, in secondi, dopo cui l'elemento verrà automaticamente rimosso dalla coda.

priority: number

Priorità dell'elemento. Gli elementi con una maggiore priorità vengono recuperati dalla coda prima degli elementi con una minor priorità.

Valore predefinito: 0

Restituzioni

void

ReadAsync

Resa

Legge uno o più elementi dalla coda come un'unica operazione atomica.

Questo metodo non elimina automaticamente gli elementi restituiti dalla coda, ma li rende invisibili agli altri ReadAsync per il periodo dell'invisibilità. Gli elementi devono essere esplicitamente rimossi dalla coda con MemoryStoreQueue:RemoveAsync() prima che il tempo di invisibilità scada. Il tempo di invisibilità predefinito è 30 secondi, a meno che un valore diverso non sia stato fornito in

Parametri

count: number

Numero di elementi da leggere. Il valore massimo consentito di questo parametro è 100.

allOrNothing: bool

Controlla il comportamento del metodo nel caso in cui la coda abbia meno di count oggetti: se impostato su false il metodo restituisce tutti gli oggetti disponibili; se impostato su true, non restituisce alcun oggetto. Il valore predefinito è falso.

Valore predefinito: false
waitTimeout: number

La durata, in secondi, per cui il metodo aspetterà se il numero richiesto di oggetti non è immediatamente disponibile nella coda. I read vengono tentati ogni due secondi durante questo periodo. Questo parametro può essere impostato a zero per indicare nessun attesa. Se questo parametro non viene fornito o impostato su -1, il metodo aspetterà indefinitamente.

Valore predefinito: -1

Restituzioni

Un tutorial di due elementi. Il primo elemento è un array di valori di oggetto letti dalla coda. Il secondo elemento è un identificatore di stringa che dovrebbe essere passato a MemoryStoreQueue:RemoveAsync() per rimuovere permanentemente questi elementi dalla coda.

Campioni di codice

Using a MemoryStoreQueue

local MemoryStoreService = game:GetService("MemoryStoreService")
local DataStoreService = game:GetService("DataStoreService")
local queue = MemoryStoreService:GetQueue("PlayerQueue")
local dataStore = DataStoreService:GetDataStore("PlayerStore")
while true do
pcall(function()
-- wait for an item to process
local items, id = queue:ReadAsync(1, false, 30)
-- check if an item was retrieved
if #items > 0 then
-- mark the item as processed
dataStore:UpdateAsync(items[0], function(data)
data = data or {}
data.processed = 1
return data
end)
-- remove the item from the queue
queue:RemoveAsync(id)
end
end)
end

RemoveAsync

void
Resa

Rimuove un elemento o più elementi precedentemente letti dalla coda. Questo metodo utilizza l'identificatore restituito da MemoryStoreQueue:ReadAsync() per identificare gli elementi da Rimuovere. Se chiamato dopo l'esaurimento del tempo di invisibilità, la chiamata non ha effetto.

Parametri

id: string

Identifica gli oggetti da Eliminare. Usa il valore restituito da MemoryStoreQueue:ReadAsync() .


Restituzioni

void

Campioni di codice

Using a MemoryStoreQueue

local MemoryStoreService = game:GetService("MemoryStoreService")
local DataStoreService = game:GetService("DataStoreService")
local queue = MemoryStoreService:GetQueue("PlayerQueue")
local dataStore = DataStoreService:GetDataStore("PlayerStore")
while true do
pcall(function()
-- wait for an item to process
local items, id = queue:ReadAsync(1, false, 30)
-- check if an item was retrieved
if #items > 0 then
-- mark the item as processed
dataStore:UpdateAsync(items[0], function(data)
data = data or {}
data.processed = 1
return data
end)
-- remove the item from the queue
queue:RemoveAsync(id)
end
end)
end

Eventi