MemoryStoreQueue
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
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
Proprietà
Metodi
Aggiunge un elemento alla coda.
Legge uno o più elementi dalla coda.
Rimuove un elemento o più elementi precedentemente letti dalla coda.
Proprietà
Metodi
AddAsync
Aggiunge un elemento alla coda.
Parametri
Il valore dell'elemento da aggiungere alla coda.
Tempo di scadenza dell'elemento, in secondi, dopo cui l'elemento verrà automaticamente rimosso dalla coda.
Priorità dell'elemento. Gli elementi con una maggiore priorità vengono recuperati dalla coda prima degli elementi con una minor priorità.
Restituzioni
ReadAsync
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
Numero di elementi da leggere. Il valore massimo consentito di questo parametro è 100.
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.
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.
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
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
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
Identifica gli oggetti da Eliminare. Usa il valore restituito da MemoryStoreQueue:ReadAsync() .
Restituzioni
Campioni di codice
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