MemoryStore 내의 큐에 액세스할 수 있습니다. 큐는 임의의 항목(최대 항목 크기 참조 - MemoryStore 제한)에 대한 임시 저장을 제공하는 데이터 구조입니다. 각 큐 항목에는 숫자 우선 순위가 있으며, 메모리 스토리지는 첫 번째로 더 높은 우선 순위를 가진 항목을
대기열에 있는 항목은 특정 시간 후에 만료할 수 있습니다. 만료된 항목은 처음에 추가된 것과 같이 대기열에서 사라집니다.
요약
메서드
대기열에 항목을 추가합니다.
대기열에서 하나 이상의 항목을 읽습니다.
이전에 큐에서 읽은 항목이나 항목을 제거합니다.
속성
메서드
AddAsync
대기열에 항목을 추가합니다.
매개 변수
대기열에 추가할 항목의 값입니다.
아이템 만료 시간, 즉 아이템이 자동으로 대기열에서 제거됩니다.
아이템 우선 순위. 우선 순위가 높은 아이템은 우선 순위가 낮은 아이템보다 먼저 대기열에서 검색됩니다.
반환
ReadAsync
큐에서 하나 이상의 항목을 단일 원자 작업으로 읽습니다.
이 메서드는 대기열에서 반환된 항목을 자동으로 삭제하지 않지만 적절한 ReadAsync 호출의 기간 동안 다른 항목을 보이지 않게 합니다. 항목은 MemoryStoreQueue:RemoveAsync() 에 명시적으로 제거되어야 합니다. MemoryStoreService:GetQueue()
매개 변수
읽음항목의 수. 이 매개 변수의 최대 값은 100입니다.
대기열에 아이템이 count 이하인 경우 메서드 동작을 제어합니다. set to false 메서드는 모든 사용 가능한 항목을 반환합니다. set to true 메서드는 아이템을 반환하지 않습니다. 기본값은 false입니다.
필요한 항목 수가 즉시 대기열에 없는 경우 메서드가 기다리는 시간(초)입니다. 이 기간 동안 읽기는 2초마다 시도됩니다. 이 매개 변수를 0으로 설정하여 대기하지 않음을 나타낼 수 있습니다. 이 매개 변수를 0으로 설정하거나 -1로 설정하면 메서드는 즉시 대기하지 않습니다.
반환
두 요소의 튜플. 첫 번째 요소는 큐에서 읽은 아이템 값 배열입니다. 두 번째 요소는 영구적으로 이 항목을 큐에서 제거하려면 MemoryStoreQueue:RemoveAsync() 에 지정된 문자열 식별자입니다.
코드 샘플
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
이전에 큐에서 읽은 항목이나 항목을 제거합니다. 이 메서드는 MemoryStoreQueue:ReadAsync() 에서 반환하는 식별자를 사용하여 제거할 항목을 식별합니다. 투명성 타임아웃이 만료된 후에 호출하면 호출에 효과가 없습니다.
매개 변수
삭제할 항목을 식별합니다. MemoryStoreQueue:ReadAsync()에 반환된 값을 사용하십시오.
반환
코드 샘플
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