Hàng đợi bộ nhớ

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Một hàng đợi là một cấu trúc dữ liệu tuyến tính với một tập hợp các mục mà theo hoặc theo nguyên tắc trước vào trước ra (FIFO) hoặc ưu tiên các phần tử dựa trên các tiêu chí đã định sẵn. Bộ nhớ hỗ trợ hai loại hàng đợi, bao gồm hàng đợi thông thườnghàng đợi ưu tiên. Cả hai loại này đều chia sẻ cùng một tập hợp các hàm để khởi tạo một hàng đợi trống, thêm dữ liệu vào hàng đợi, đọc dữ liệu từ hàng đợi và loại bỏ dữ liệu từ hàng đợi.

Các hàng đợi bộ nhớ rất hữu ích cho việc xử lý theo thứ tự và lưu trữ thông tin người dùng, chẳng hạn như cấp độ kỹ năng, để tạo điều kiện cho việc ghép nối dựa trên các tiêu chí mà bạn mong muốn. Ví dụ, bạn có thể thêm một nơi chờ như là nơi bắt đầu trò chơi của bạn, sử dụng các hàng đợi bộ nhớ như một hệ thống lưu trữ thông tin người dùng trung tâm có thể truy cập bởi nhiều máy chủ, quản lý thứ tự xếp hạng của người dùng bằng cách sử dụng các hàng đợi, và teleport người dùng đã hoàn thành việc ghép nối đến nơi chính trong trò chơi của bạn.

Lấy một hàng đợi

Để lấy một hàng đợi, hãy gọi MemoryStoreService:GetQueue() với một tên, mà là toàn cầu trong trò chơi để bất kỳ mã nào cũng có thể truy cập, và một thời gian vô hình tùy chọn tính bằng giây, mà ngăn chặn việc xử lý trùng lặp cho cùng một mục hàng đợi. Thời gian vô hình mặc định là 30 giây nếu bạn để trống như trong đoạn mã mẫu sau.

Lấy một Hàng đợi Trống

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

Khi một hàng đợi đang xử lý một mục trong đó, thời gian vô hình áp dụng cho mục đó, khiến nó trở nên vô hình để không bị xử lý bởi các máy chủ khác, vì nhiều máy chủ có thể cập nhật hàng đợi đồng thời. Mặc dù dự kiến hoàn thành cả hoạt động đọc và loại bỏ cho một mục trong thời gian vô hình, nếu có lỗi xảy ra khiến mục đó vẫn còn trong hàng đợi sau khi thời gian đã hết, các mục sẽ trở nên khả dụng để xử lý lại. Làm như vậy, thời gian vô hình đảm bảo rằng tất cả các mục trong một hàng đợi vẫn có thể được xử lý ngay cả khi xảy ra các sự cố bất ngờ.

Sau khi bạn lấy một hàng đợi, gọi bất kỳ hàm nào trong số các hàm sau:

HàmHành động
MemoryStoreQueue:AddAsync()Thêm một mục mới vào hàng đợi.
MemoryStoreQueue:ReadAsync()Đọc một hoặc nhiều mục từ hàng đợi như một hoạt động duy nhất.
MemoryStoreQueue:RemoveAsync()Loại bỏ một hoặc nhiều mục đã được đọc trước đó từ hàng đợi.
MemoryStoreQueue:GetSizeAsync()Lấy số lượng mục trong hàng đợi.

Thêm dữ liệu

Để thêm một mục mới vào hàng đợi, hãy gọi MemoryStoreQueue:AddAsync() với giá trị item, thời gian hết hạn tính bằng giây và một ưu tiên tùy chọn cho mục đó. Nếu bạn muốn giữ cho hàng đợi của mình theo thứ tự FIFO, bạn có thể để ưu tiên trống hoặc truyền 0.

Thêm Dữ liệu vào một Hàng đợi

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

Đọc và loại bỏ dữ liệu

Để đọc một hoặc nhiều mục từ hàng đợi cùng một lúc, hãy gọi MemoryStoreQueue:ReadAsync(), điều này trả về một id đại diện cho mục đã đọc. Khi bạn hoàn thành quá trình xử lý các mục, hãy ngay lập tức gọi MemoryStoreQueue:RemoveAsync() để xóa chúng khỏi hàng đợi với id của nó. Điều này đảm bảo rằng bạn không bao giờ xử lý một mục nhiều hơn một lần. Để nắm bắt và phản hồi tất cả các mục đang liên tục được thêm vào một hàng đợi, hãy bao gồm một vòng lặp giống như đoạn mã mẫu sau:

Đọc và Loại bỏ Dữ liệu từ Hàng đợi với Vòng lặp

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
-- Vòng lặp xử lý hàng đợi
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

Lấy kích thước

Để lấy số lượng mục trong hàng đợi, hãy gọi MemoryStoreQueue:GetSizeAsync(). Phương pháp này nhận một boolean tùy chọn excludeInvisible. Khi nó là true, các mục vô hình sẽ bị loại trừ khỏi số lượng trả về. Boolean này mặc định là false.

Lấy Kích thước của một Hàng đợi

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, logo Roblox và Powering Imagination là các nhãn hiệu đã đăng ký và chưa đăng ký của chúng tôi tại Hoa Kỳ và các quốc gia khác.