A 队列 是一个线性数据结构,其收集的项目跟随第一个在第一个出现的原理或优先级按照原定的标准进行排序。 内存存储 支持两种队列类型,普通队列 和 1>优先队列1>。 两种队列类型共
记忆存储队列有助于顺序基于处理和存储用户信息,例如技能等级,以便根据您所希望的条件进行匹配。例如您可以将大厅地点添加为您的体验的开始位置,使用记忆存储队列作为多个服务器中集中的用户信息存储系统,管理匹配请求的顺序,并将完成匹配的用户传送到您的体验的主要位置。
获得队列
要获取队列,请使用 MemoryStoreService:GetQueue() 使用一个 名称 ,这是在体验中对任何脚本的1) 使用权 2)通行证 3)访问权限问的全球内,并且是在秒内的选项 隐藏时间 ,以防止复制同一队列项物品的处理。隐藏时间默认为 30 秒,如果您在下面的代码示例中离开为空,则会导致 duplicated 处
获取空队列
local MemoryStoreService = game:GetService("MemoryStoreService")local queue = MemoryStoreService:GetQueue("Queue1")
当队列处理一个项目时,隐形时间(即从其他服务器处理)结束时,对该物品目适用隐形时间过期,该项目从隐形状态变为可见状态,因此在隐形时间过期期间,如果发生错误,该项目可以继续处理。虽然如此,隐形时间保证在过期期间内所有项目都可以
在获得队列后,调用以下函数之一来读取或写入数据:
函数 | 行动 |
---|---|
MemoryStoreQueue:AddAsync() | 添加 新物品到队列。 |
MemoryStoreQueue:ReadAsync() | 读取一个或多个项目从队列作为单个操作。 |
MemoryStoreQueue:RemoveAsync() | 移除 一个或多个以前从队列中读取的项目。 |
添加数据
要将新项目添加到队列,请使用 MemoryStoreQueue:AddAsync() 与项目值、有效时间在秒内,以及项物品的优先级。如果您想要保持您的队列在 FIFO 顺序中,您可以留下优先级为空或传递 0 。
将数据添加到队列
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
阅读和删除数据
要读取一些或多个项目从队列中一次,请调用 MemoryStoreQueue:ReadAsync() ,其中返回一个 id 代表读取项物品。当您处理完项目时,立即调用 Class.MemoryStoreQueue:RemoveAsync()</
使用循环从队列中读取和移除数据
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
-- 队列处理循环
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