Antrian penyimpanan memori

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

An antrian adalah struktur data linear dengan koleksi item yang mengikuti prinsip first-in-first-out (FIFO) atau memprioritaskan elemen berdasarkan kriteria yang telah ditentukan. Penyimpanan memori mendukung dua jenis antrian, yaitu antrian reguler FIFO dan antrian prioritas. Kedua jenis tersebut memiliki seperangkat fungsi yang sama untuk menginisialisasi antrian kosong, menambahkan data ke dalam antrian, membaca data dari antrian, dan menghapus data dari antrian.

Antrian penyimpanan memori berguna untuk pemrosesan berbasis urutan dan menyimpan informasi pengguna, seperti tingkat keterampilan, untuk memfasilitasi pencocokan berdasarkan kriteria yang Anda inginkan. Misalnya, Anda dapat menambahkan tempat lobi sebagai tempat awal permainan Anda, menggunakan antrian penyimpanan memori sebagai sistem penyimpanan informasi pengguna terpusat yang dapat diakses oleh beberapa server, mengelola urutan penempatan pengguna menggunakan antrian, dan teleport pengguna yang telah menyelesaikan pencocokan ke tempat utama permainan Anda.

Mendapatkan antrian

Untuk mendapatkan antrian, panggil MemoryStoreService:GetQueue() dengan nama, yang bersifat global dalam permainan agar dapat diakses oleh skrip mana pun, dan timeout ketidaksadaran opsional dalam detik, yang mencegah pemrosesan duplikat item antrian yang sama. Timeout ketidaksadaran adalah 30 detik secara default jika Anda membiarkannya kosong seperti pada cuplikan kode berikut.

Mendapatkan Antrian Kosong

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

Ketika sebuah antrian sedang memproses item di dalamnya, timeout ketidaksadaran diterapkan pada item tersebut, menjadikannya tidak terlihat untuk diproses oleh server lain, karena beberapa server dapat memperbarui antrian secara bersamaan. Meskipun diharapkan untuk menyelesaikan operasi baca dan penghapusan untuk sebuah item selama durasi timeout ketidaksadaran, jika terjadi kesalahan yang menyebabkan item tetap berada di antrian setelah timeout berakhir, item-item tersebut menjadi terlihat untuk diproses kembali. Dengan cara ini, timeout ketidaksadaran menjamin bahwa semua item dalam antrian masih dapat diproses meskipun terjadi masalah yang tak terduga.

Setelah Anda mendapatkan antrian, panggil salah satu fungsi berikut:

FungsiAksi
MemoryStoreQueue:AddAsync()Tambahkan item baru ke antrian.
MemoryStoreQueue:ReadAsync()Baca satu atau lebih item dari antrian sebagai satu operasi.
MemoryStoreQueue:RemoveAsync()Hapus satu atau lebih item yang telah dibaca sebelumnya dari antrian.
MemoryStoreQueue:GetSizeAsync()Dapatkan jumlah item dalam antrian.

Menambahkan data

Untuk menambahkan item baru ke antrian, panggil MemoryStoreQueue:AddAsync() dengan nilai item, waktu kedaluwarsa dalam detik, dan prioritas item yang opsional. Jika Anda ingin menjaga antrian Anda dalam urutan FIFO, Anda dapat membiarkan prioritas kosong atau memberikan 0.

Menambahkan Data ke Antrian

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

Membaca dan menghapus data

Untuk membaca satu atau lebih item dari antrian sekaligus, panggil MemoryStoreQueue:ReadAsync(), yang mengembalikan id yang mewakili item yang dibaca. Ketika Anda selesai memproses item, segera panggil MemoryStoreQueue:RemoveAsync() untuk menghapusnya dari antrian dengan id-nya. Ini memastikan bahwa Anda tidak pernah memproses item lebih dari sekali. Untuk menangkap dan merespons semua item yang terus-menerus ditambahkan ke antrian, sertakan sebuah loop seperti pada cuplikan kode berikut:

Membaca dan Menghapus Data dari Antrian dengan 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
-- Loop pemrosesan antrian
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

Mendapatkan ukuran

Untuk mendapatkan jumlah item dalam antrian, panggil MemoryStoreQueue:GetSizeAsync(). Metode ini membutuhkan boolean opsional excludeInvisible. Ketika itu true, item yang tidak terlihat dikecualikan dari jumlah yang dikembalikan. Boolean ini defaultnya false.

Mendapatkan Ukuran Antrian

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, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.