Uma fila de espera é uma estrutura de dados linear com uma coleção de itens que seguem o princípio de primeiro-in-first-out (FIFO) ou priorizam elementos com base em critérios pré-definidos. Armazenamento de memória suporta dois tipos de fila, o FIFO queens fil
As filas de armazenamento de memória são úteis para processamento baseado em ordem e armazenamento de informações do usuário, como níveis de habilidade, para facilitar a compilação baseada nos seus critérios desejados. Por exemplo, você pode adicionar um lugar de lobby como o local de partida inicial de sua experiência, usar filas de armazenamento de memória como um sistema de armazenamento de informações centralizado acessível por vários servidores, gerenciar a ord
Comando de Entrada
Para obter uma fila, chame MemoryStoreService:GetQueue() com um nome , que é global dentro da experiência para qualquer script acesso, e um tempo limite de invisibilidade em segundos, o que impede a processagem duplicada do mesmo item de fila. O tempo limite de invisibilidade é 30 segundos por padrão se você deixar vazio como o seguinte exemplo de código.
Obtendo uma Fila Vazia
local MemoryStoreService = game:GetService("MemoryStoreService")local queue = MemoryStoreService:GetQueue("Queue1")
Quando uma fila processa um item nela, o tempo limite de invisibilidade aplica-se ao item, tornando-o invisível de ser processado por outros servidores, pois vários servidores podem atualizar o tempo limite de invisibilidade durante a duração do tempo limite de invisibilidade. Embora seja esperado que todas as leituras e remoções de um item durante a duração do tempo limite
Depois de obter uma fila, chame qualquer uma das seguintes funções para ler ou escrever dados nela:
Função | Ação |
---|---|
MemoryStoreQueue:AddAsync() | Adicionar um novo item à fila. |
MemoryStoreQueue:ReadAsync() | Leia um ou mais itens da fila como uma operação única. |
MemoryStoreQueue:RemoveAsync() | Remover um ou mais itens lidos anteriormente da fila. |
Adicionando Dados
Para adicionar um novo item à fila, chame MemoryStoreQueue:AddAsync() com o valor do item, um tempo de expiração em segundos e uma prioridade opcional do item. Se você quiser manter sua fila na sequência FIFO, você pode deixar a prioridade vazia ou passar 0 .
Adicionando Dados à uma Fila
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
Lendo e Removendo Dados
Para ler um ou mais itens da fila de uma vez, chame MemoryStoreQueue:ReadAsync(), que retorna um id representando o item de leitura. Quando você terminar de processar itens, imediatamente chame Class.MemoryStoreQueue:
Lendo e Removendo Dados da Fila com 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
-- Loop de processo de fila
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