คิวเก็บหน่วยความจํา

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

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

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

รับคิว

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

รับคิวว่างเปล่า

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

อ่านและลบข้อมูลจากคิวด้วยลูป

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