Un Queue è una struttura dati lineare con una collezione di elementi che segue il principio first-in-first-out (FIFO) o priorizza gli elementi in base a criteri predefiniti. I memorie store supportano due tipi diQueue, il FIFO 1>regolari queue1> e 4>que
Le code di memoria sono utili per il processing di ordine basato sui criteri e per memorizzare informazioni utente, come skill level, per facilitare la matchmaking basata sui criteri desiderati. Ad esempio, puoi aggiungere un luogo della lobby come punto di partenza della tua esperienza, utilizzare le code di memoria come un sistema di storage delle informazioni utente centralizzato accessibile da più server, gestire l'ordine di posizionamento degli utenti usando le code e teleportare l'utente che ha
Ottenere una coda
Per ottenere una coda, chiama MemoryStoreService:GetQueue() con un nome , che è globale all'interno dell'esperienza per qualsiasi script per Accesso, e un opzionale timer invisibility in secondi, che impedisce il processo duplicato della stessa coda dell'Articolo. Il timer invisibility è 30 secondi per impostazione predefinita se lo lasci vuoto come il seguente esempio
Ottenere una coda vuota
local MemoryStoreService = game:GetService("MemoryStoreService")local queue = MemoryStoreService:GetQueue("Queue1")
Quando una coda elabora un oggetto in esso, l'invisibilità timer si applica all'Articolo, rendendolo invisibile dal essere elaborato da altri server, poiché più server possono aggiornare la coda contemporaneamente. Anche se è previsto che completi entrambe le operazioni di lettura e rimozione per un oggetto durante la durata dell'invisibilità, se si Si verificanoun errore che
Dopo aver ottenuto una coda, chiama una delle seguenti funzioni per leggere o scrivere dati in essa:
Funzione | Azione |
---|---|
MemoryStoreQueue:AddAsync() | Aggiungi un nuovo oggetto alla coda. |
MemoryStoreQueue:ReadAsync() | Leggi uno o più elementi dalla coda come un'operazione singola. |
MemoryStoreQueue:RemoveAsync() | Rimuovi uno o più oggetti precedentemente letti dalla coda. |
Aggiungere dati
Per aggiungere un nuovo elemento alla coda, chiama MemoryStoreQueue:AddAsync() con il valore dell'elemento, un tempo di scadenza in secondi e una priorità opzionale dell'Articolo. Se vuoi mantenere la tua coda nella sequenza FIFO, puoi lasciare la priorità vuota o passare 0 .
Aggiungere dati a una coda
local MemoryStoreService = game:GetService("MemoryStoreService")
local queue = MemoryStoreService:GetQueue("Queue1")
local addSuccess, addError = pcall(function()
queue:AddAsync("User_1234", 30, 1)
end)
if not addSuccess then
warn(addError)
end
Lettura e rimozione dei dati
Per leggere uno o più elementi dalla coda contemporaneamente, chiama MemoryStoreQueue:ReadAsync() , che restituisce un id che rappresenta l'Articolodi lettura. Quando hai finito di elaborare gli elementi, chiama immediatamente Class
Leggere e rimuovere i dati dalla coda con loop
local MemoryStoreService = game:GetService("MemoryStoreService")
local queue = MemoryStoreService:GetQueue("Queue1")
local addSuccess, addError = pcall(function()
queue:AddAsync("User_1234", 30, 1)
end)
if not addSuccess then
warn(addError)
end
-- Coda di elaborazione
while true do
local readSuccess, items, id = pcall(function()
return queue:ReadAsync(1, false, 30)
end)
if not readSuccess then
task.wait(1)
elseif #items > 0 then
print(items, id)
local removeSuccess, removeError = pcall(function()
queue:RemoveAsync(id)
end)
if not removeSuccess then
warn(removeError)
end
end
end