MemoryStoreQueue

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Brak możliwości tworzenia
Bez replikacji

Dostarcza dostęp do konsoli w MemoryStore. Konsola jest strukturą danych, która dostarcza tymczasowe przechowywanie dla dowolnych pozycji (maksymalny rozmiar pozycji – patrz Limitowanie MemoryStore). Każdy pozycji konsoli ma priorytet liczbowy: MemoryStore odczytuje pozycje z wyższym priorytetem z konsoli pierwszy, a odczytuje pozycje z tego samego priorytetu w kolejności dodawania.

Przedmioty w kolejce mogą być opcjonalnie ustawione na wygasanie po pewnym czasie. Wygasłe przedmioty po prostu znikają z kolejki, jakby nie zostały nigdy dodane.

Podsumowanie

Metody

Właściwości

Metody

AddAsync

void
Wynik

Dodaje pozycję do kolejki.

Parametry

value: Variant

Wartość przedmiotu do dodania do kolejki.

expiration: number

Czas wygasania przedmiotu, w sekundach, po którym przedmiot zostanie automatycznie usunięty z kodu.

priority: number

Priorytet przedmiotu. Przedmioty o większym priorytecie są odczytywane z koszyku przedmiotów przed przedmiotami o niższym priorytecie.

Wartość domyślna: 0

Zwroty

void

ReadAsync

Wynik

Czyta jeden lub więcej pojedynczych pozycji z kolejki jako jedną lub więcej operacji atomowych.

Ten metod nie automatycznie usuwa zwróconych pozycji z koszyka, ale sprawia, że są niewidoczne dla innych wezwania ReadAsync przez okres czasu wygasania niewidzialności. Pozycje muszą być wyraźnie usunięte z koszyka z MemoryStoreQueue:RemoveAsync() przed wygasнием czasu wygaszenia niewidzialności. Domyślny czas wygaszenia wynosi 30 se

Parametry

count: number

Liczba pozycji do przeczytane. Maksymalna wartość tego parametru to 100.

allOrNothing: bool

Kontroluje zachowanie metody w przypadku, gdy kolejka ma mniej niż count pozycji: jeśli ustawiono na fałszywy, metoda zwraca wszystkie dostępne pozycje; jeśli ustawiono na prawdziwy, nie zwraca żadnych pozycji. Domyślną wartością jest fałszywy.

Wartość domyślna: false
waitTimeout: number

Czas, w sekundach, dla którego metoda będzie czekać, jeśli wymaganą liczbę pozycji nie jest natychmiastowo dostępna w kolejce. Czytania są próbowane co dwa sekundy w tym okresie. Ten parametr można ustawić na zero, aby nie wykonywać czekania. Jeśli ten parametr nie jest ustawiony lub ustawiony na -1, metoda będzie czekać w nieokreślonym czasie.

Wartość domyślna: -1

Zwroty

Tup z dwóch elementów. Pierwszy element to maszyna przecinków czytanych z konsoli. Drugi element to identyfikator maszyny przecinków, który powinien być przekazany do MemoryStoreQueue:RemoveAsync() , aby stale usunąć te pozycje z konsoli.

Przykłady kodu

The following code sample demonstrates using MemoryStoreQueue:ReadAsync() and MemoryStoreQueue:RemoveAsync() to reliably read, process, and remove items from a queue. Though this process can be as complicated as necessary, this example simply sets a flag in the corresponding data store item, which guarantees that every item will eventually be processed even if some of the calls encounter errors or the server crashes:

Depending on where the failure happens, it's possible that an item will be processed more than once. You should account for that like the following code sample, in which the end result is the same even if DataStoreService:UpdateAsync() is invoked multiple times.

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
Wynik

Usuwa przedmiot lub przedmioty wcześniej czytane z konsoli. Ten metod używa identyfikatora zwróconego przez MemoryStoreQueue:ReadAsync(), aby zidentyfikować przedmioty do usuwać, wyjmować. Jeśli zostanie wywołany po wygasaniu czasu nieaktywności, wezwanie nie ma efektu.

Parametry

id: string

Określa przedmioty do usuwać. Użyj wartości zwróconej przez MemoryStoreQueue:ReadAsync() .


Zwroty

void

Przykłady kodu

The following code sample demonstrates using MemoryStoreQueue:ReadAsync() and MemoryStoreQueue:RemoveAsync() to reliably read, process, and remove items from a queue. Though this process can be as complicated as necessary, this example simply sets a flag in the corresponding data store item, which guarantees that every item will eventually be processed even if some of the calls encounter errors or the server crashes:

Depending on where the failure happens, it's possible that an item will be processed more than once. You should account for that like the following code sample, in which the end result is the same even if DataStoreService:UpdateAsync() is invoked multiple times.

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

Zdarzenia