MemoryStoreQueue
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Bietet Zugriff auf eine Warteschlange innerhalb von MemoryStore. Eine Warteschlange ist eine Datenstruktur, die temporäre Speicher für beliebige Gegenstände (bis zum maximalen Gegenstandsgrößen -- siehe MemoryStore Limits ) bietet. Jeder Warteschlange-Artikel hat eine nummerische Priorität: MemoryStore ruft Gegenstände mit höherer Priorität aus der Warteschlange ab und ruft Gegenstände mit derselben Priorität in der Reihenfolge hinzu.
Items in der Warteschlange können optional nach einer bestimmten Zeit abgelaufen werden. Abgelaufene Gegenstände verschwinden einfach aus der Warteschlange, als ob sie nie hinzugefügt wurden.
Zusammenfassung
Methoden
Fügt einer Warteschlange einen Artikel hinzu.
Lies einen oder mehrere Gegenstände aus der Warteschlange.
Entfernt einen Gegenstand oder mehrere Gegenstände, die zuvor aus der Warteschlange gelesen wurden.
Eigenschaften
Methoden
AddAsync
Fügt einer Warteschlange einen Artikel hinzu.
Parameter
Der Wert des Elements, der zur Warteschlange hinzugefügt werden soll.
Item-Expiry-Zeit, in Sekunden, nach der das Item automatisch aus der Warteschlange entfernt wird.
Item-Priorität. Elemente mit höherer Item-Priorität werden aus der Warteschlange vor Elementen mit niedrigerer Item-Priorität abgerufen.
Rückgaben
ReadAsync
Lädt einen oder mehrere Gegenstände aus der Warteschlange als eine einzige atomare Operation.
Diese Methode löscht nicht automatisch die zurückgegebenen Elemente aus der Warteschlange, aber macht sie für die Dauer des Unsichtbarkeitszeitlimits unsichtbar. Die Elemente müssen explizit aus der Warteschlange mit MemoryStoreQueue:RemoveAsync() entfernt werden, bevor der Unsichtbarkeitszeitlimit abläuft. Die Unsichtbarkeitszeitlimit-Standard beträgt 30 Sekunden, wenn ke
Parameter
Anzahl der zu gelesenElemente. Der maximale erlaubte Wert dieses Parameters ist 100.
Steuert das Verhalten der Methode im Falle, dass die Warteschlange weniger als count Elemente hat: Wenn auf falsch gesetzt, gibt die Methode alle verfügbaren Elemente zurück; Wenn auf wahr gesetzt, gibt sie keine Elemente zurück. Standardwert ist falsch.
Die Dauer, in Sekunden, für die die Methode warten wird, wenn die erforderliche Anzahl von Artikeln nicht sofort in der Warteschlange verfügbar ist. Lesungen werden jede zwei Sekunden während dieser Zeit versucht. Dieser Parameter kann auf null gesetzt werden, um keinen Wartet zu zeigen. Wenn dieser Parameter nicht angegeben wird oder auf -1 gesetzt wird, wartet die Methode indefinitiv.
Rückgaben
Ein Array von zwei Elementen. Das erste Element ist ein Array von Artikelwerten, die aus der Warteschlange gelesen werden. Das zweite Element ist ein String-Identifikator, der an MemoryStoreQueue:RemoveAsync() übergeben werden muss, um diese Elemente dauerhaft aus der Warteschlange zu entfernen.
Code-Beispiele
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
Entfernt einen Gegenstand oder mehrere Gegenstände, die zuvor aus der Warteschlange gelesen wurden. Dieser Methode verwendet die ID-Anzeige, die von MemoryStoreQueue:ReadAsync() zurückgegeben wird, um die zu entfernenden Gegenstände zu identifizieren. Wenn nach dem Ablauf des Unsichtbarkeits Timeouts aufgerufen wird, hat der Aufruf keinen Effekt.
Parameter
Identifiziert die zu löschenden Elemente. Verwenden Sie den Wert, der von MemoryStoreQueue:ReadAsync() zurückgegeben wird.
Rückgaben
Code-Beispiele
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