Eine Warteschlange ist eine linke Datenstruktur mit einer Sammlung von Elementen, die entweder folgt dem ersten-in-erst-aus-Prinzip (FIFO) oder nach vordefinierten Kriterien Elemente priorisiert. Speicher-Stores unterstützen zwei Arten von Warteschlangen, die regelmäßige FIFO-
Speicherplatz-Warteschlange ist nützlich für die Ordnungs-basierte Verarbeitung und Speicherung von Benutzerinformationen, wie Skill-Level, um das Matchmaking basierend auf Ihren gewünschten Kriterien zu erleichtern. Zum Beispiel können Sie einen Lobbyplatz als Startplatz Ihres Erlebnisses hinzufügen, den Speicherplatz-Warteschlange als zentralisierten Benutzer-Information-Speicher zugänglich machen, den Platzierungsordner von Benutzern
Eine Warteschlange erstellen
Um eine Warteschlange zu erhalten, rufen Sie MemoryStoreService:GetQueue() mit einem Namen auf, der global innerhalb der Erfahrung für jedes Skript Zugriffist, und einem optionalen Invisibility Timeout in Sekunden, der das duplizierte Verarbeiten desselben Artikelverhindert. Das Invisibility Timeout beträgt standardmäßig 30 Sekunden, wenn Sie es leer wie das folgende
Eine leere Warteschlange erhalten
local MemoryStoreService = game:GetService("MemoryStoreService")local queue = MemoryStoreService:GetQueue("Queue1")
Wenn eine Warteschlange ein Element in ihm verarbeitet, gilt der Unsichtbaritätszeitlimit für das Artikel, so dass es unsichtbar wird, wenn es von anderen Servern verarbeitet wird, da mehrere Server die Warteschlange gleichzeitig aktualisieren können. Obwohl es erwartet wird, dass alle Elemente in einer Warteschlange während der Unsichtbaritätszeitlimit-Dauer noch verarbeitet werden können,
Nachdem du eine Warteschlange erhalten hast, rufe eine der folgenden Funktionen auf, um Daten in ihr zu lesen oder zu schreiben:
Funktion | Aktion |
---|---|
MemoryStoreQueue:AddAsync() | Füge einem neuen Element in der Warteschlange ein. |
MemoryStoreQueue:ReadAsync() | Lesen Sie einen oder mehrere Gegenstände aus der Warteschlange als eine einzige Operation. |
MemoryStoreQueue:RemoveAsync() | Entferne einen oder mehrere Artikel vorher aus der Warteschlange. |
Daten hinzufügen
Um einen neuen Gegenstand zur Warteschlange hinzuzufügen, rufe MemoryStoreQueue:AddAsync() mit dem Gegenstandswert, einer Verfallszeit in Sekunden und einer optionalen Priorität des Artikel. Wenn Sie Ihre Warteschlange in der FIFO-Reihenfolge halten möchten, können Sie die Priorität leer lassen oder 0 .
Daten zu einer Warteschlange hinzufügen
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
Lesen und entfernen von Daten
Um einen oder mehrere Gegenstände aus der Warteschlange auf einmal zu lesen, rufen Sie MemoryStoreQueue:ReadAsync() auf, wobei ein id darstellt, das den Leseausschnitt repräsentiert. Wenn Sie mit dem Verarbeiten von Gegen
Lesen und Entfernen von Daten aus der Warteschlange mit 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
-- Warteschlange verarbeiten Loop
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