A キュー は、フィフォの原則に従するか、先に入れ替える項目を優先するかによって構成されたリニアデータ構造です。メモリストア は、FIFOの原則に従うか、先に入れ替える項目を優先す
メモリストアのキューは、スキルレベルなどのユーザー情報を簡単に処理および保存するために便利です。たとえば、ユーザーが指定した条件に基づいてマッチメイキングを行うために、メモリストアのキューを開始場所として追加したり、メモリストアのキューを中央集中型ユーザー
キューを取得する
To get a queue, call MemoryStoreService:GetQueue() with a 名前 、 which is global within the experience for any script to access, and an optional 非表示時間アクセス, 書き込み権限 (write access)れ in seconds, which prevent duplicated processing of the same queue item. Invisibilitytimeout is 30 seconds by default if you leave it empty like the following code sample.
空のキューを取得する
local MemoryStoreService = game:GetService("MemoryStoreService")local queue = MemoryStoreService:GetQueue("Queue1")
キューがアイテムを処理すると、アイテムに隠れる時間が長くなり、他のサーバーによって処理されるようになります。これは、複数のサーバーがキューを同時に更新するため、アイテムを処理するための読み取りと削除のオペレーションを完
後で、次の関数の 1 つを呼び出して、キューに入れられたデータを読み込んだり書き込んだりできます:
機能 | アクション |
---|---|
MemoryStoreQueue:AddAsync() | 新しいアイテムをキューに追加します。 |
MemoryStoreQueue:ReadAsync() | 1つまたは複数のアイテムをキューから単一のオペレーションとして読み取ります。 |
MemoryStoreQueue:RemoveAsync() | 削除 以前にキューから読み込まれた 1つまたは複数のアイテムを削除します。 |
データの追加
新しいアイテムをキューに追加するには、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
データの読み取りと削除
クエール内の 1つまたは複数のアイテムを一度に読み込むには、MemoryStoreQueue:ReadAsync() を呼び出し、id を返します。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