คิวสำหรับหน่วยความจำ

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

คิว (queue) เป็นโครงสร้างข้อมูลเชิงเส้นที่มีการรวบรวมรายการซึ่งปฏิบัติตามหลักการแรกเข้า-ออกแรก (FIFO) หรือจัดอันดับสมาชิกตามเกณฑ์ที่กำหนดไว้ล่วงหน้า หน่วยความจำ รองรับคิว 2 ประเภท คือ คิวปกติ และ คิวตามลำดับความสำคัญ ซึ่งทั้งสองประเภทมีชุดฟังก์ชันเดียวกันสำหรับการเริ่มต้นคิวว่าง เพิ่มข้อมูลลงในคิว อ่านข้อมูลจากคิว และลบข้อมูลจากคิว

คิวสำหรับหน่วยความจำมีประโยชน์ในการประมวลผลตามลำดับและการจัดเก็บข้อมูลผู้ใช้ เช่น ระดับทักษะ เพื่อช่วยในการจับคู่ตามเกณฑ์ที่คุณต้องการ ตัวอย่างเช่น คุณสามารถเพิ่มสถานที่ล็อบบี้เป็นสถานที่เริ่มต้นของเกมของคุณ ใช้คิวสำหรับหน่วยความจำเป็นระบบจัดเก็บข้อมูลผู้ใช้ที่เข้าถึงได้จากหลายเซิร์ฟเวอร์ จัดการลำดับการวางของผู้ใช้โดยใช้คิว และโทรเฟรสมาจับคู่ผู้ใช้ที่เสร็จสิ้นไปยังสถานที่หลักของเกมของคุณ

รับคิว

เพื่อที่จะได้รับคิว ให้เรียก MemoryStoreService:GetQueue() โดยใช้ ชื่อ ซึ่งเป็นชื่อทั่วโลกภายในเกมสำหรับสคริปต์ใดๆ ที่เข้าถึงได้ และยังมี เวลาดูไม่ได้ แบบเลือกได้ในหน่วยวินาที ซึ่งป้องกันไม่ให้มีการประมวลผลรายการคิวซ้ำ เวลาดูไม่ได้เริ่มต้นที่ 30 วินาทีหากคุณปล่อยให้ว่างไว้เหมือนในตัวอย่างโค้ดด้านล่าง

Getting an Empty Queue

local MemoryStoreService = game:GetService("MemoryStoreService")
local queue = MemoryStoreService:GetQueue("Queue1")

เมื่อคิวกำลังประมวลผลรายการในนั้น เวลาดูไม่ได้นั้นจะถูกนำไปใช้กับรายการ ทำให้มันไม่สามารถประมวลผลโดยเซิร์ฟเวอร์อื่นได้ เนื่องจากเซิร์ฟเวอร์หลายตัวสามารถอัปเดตคิวได้พร้อมกัน แม้ว่าจะคาดหวังว่าจะทำงานอ่านและลบรายการให้เสร็จภายในระยะเวลาเวลาดูไม่ได้ หากเกิดข้อผิดพลาดที่ทำให้รายการยังคงอยู่ในคิวหลังจากเวลาดูได้หมดลง รายการจะกลับมามองเห็นได้สำหรับการประมวลผลอีกครั้ง ในการทำเช่นนี้ เวลาดูไม่ได้จะรับประกันว่าทุกรายการในคิวยังคงสามารถประมวลผลได้แม้ว่าจะเกิดปัญหาที่ไม่คาดคิด

หลังจากที่คุณได้รับคิวแล้ว ให้เรียกใช้งานฟังก์ชันใดฟังก์ชันหนึ่งต่อไปนี้:

ฟังก์ชันการดำเนินการ
MemoryStoreQueue:AddAsync()เพิ่ม รายการใหม่ลงในคิว
MemoryStoreQueue:ReadAsync()อ่าน รายการหนึ่งหรือหลายรายการจากคิวเป็นการดำเนินการเดียว
MemoryStoreQueue:RemoveAsync()ลบ รายการหนึ่งหรือหลายรายการที่เคยอ่านจากคิว
MemoryStoreQueue:GetSizeAsync()รับ จำนวนรายการในคิว

เพิ่มข้อมูล

ในการเพิ่มรายการใหม่ลงในคิว ให้เรียก MemoryStoreQueue:AddAsync() โดยใช้ค่าของรายการ เวลาหมดอายุในวินาที และความสำคัญของรายการเป็นตัวเลือก หากคุณต้องการให้คิวของคุณอยู่ในลำดับ FIFO คุณสามารถปล่อยให้ความสำคัญว่างหรือระบุเป็น 0

Adding Data to a Queue

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 แทนรายการที่อ่าน เมื่อคุณประมวลผลรายการเสร็จแล้ว ให้เรียก MemoryStoreQueue:RemoveAsync() ทันทีเพื่อลบรายการออกจากคิวโดยใช้ id ของรายการ เพื่อรับประกันว่าคุณจะไม่ประมวลผลรายการมากกว่าหนึ่งครั้ง ในการจับและตอบสนองต่อรายการทั้งหมดที่ถูกเพิ่มอย่างต่อเนื่องลงในคิว ให้รวม ลูป เช่นเดียวกับตัวอย่างโค้ดด้านล่าง:

Reading and Removing Data from Queue with 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
-- ลูปการประมวลผลคิว
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

รับขนาด

ในการรับจำนวนรายการในคิว ให้เรียก MemoryStoreQueue:GetSizeAsync(). วิธีการนี้มีบูลีน خيارًاเพื่อเลือก excludeInvisible. เมื่อมันเป็น true รายการที่มองไม่เห็นจะถูกยกเว้นจากการนับผลลัพธ์ที่คืนกลับ บูลีนนี้เริ่มต้นที่ false.

Getting the Size of a Queue

local MemoryStoreService = game:GetService("MemoryStoreService")
local queue = MemoryStoreService:GetQueue("Queue1")
local addSuccess, addError = pcall(function()
return queue:AddAsync("User_1234", 30, 1)
end)
if not addSuccess then
warn(addError)
end
local size
local success, sizError = pcall(function()
size = queue:GetSizeAsync(true)
end)
if success then
print(size)
else
warn(sizeError)
end
©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ