MemoryStoreQueue
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
Menyediakan akses ke antrian dalam MemoryStore. Antrian adalah struktur data yang menyediakan penyimpanan sementara untuk item apa pun (sampai dengan ukuran item maksimum -- lihat Memori Toko Batas ). Setiap item antrian memiliki prioritas numerik: MemoriStore mengambil item dengan prioritas lebih tinggi dari antrian pertama, dan itu mengambil Item dengan prioritas yang sama dalam urutan tambahan.
Item dalam antrian dapat diatur untuk kedaluwarsa setelah jumlah waktu tertentu. Item yang kedaluwarsa hanya menghilang dari antrian seolah-olah mereka tidak pernah ditambahkan.
Rangkuman
Metode
Menambahkan item ke antrian.
Membaca satu atau lebih item dari antrian.
Menghapus item atau item sebelumnya yang dibaca dari antrian.
Properti
Metode
AddAsync
Menambahkan item ke antrian.
Parameter
Nilai item untuk ditambahkan ke antrian.
Waktu kedaluwarsa item, dalam detik, setelah itu item akan dihapus secara otomatis dari antrian.
Prioritas item. Item dengan prioritas tinggi diambil dari antrian sebelum item dengan prioritas lebih rendah.
Memberikan nilai
ReadAsync
Membaca satu atau lebih item dari antrian sebagai operasi atomik tunggal.
Metode ini tidak secara otomatis menghapus item yang dikembalikan dari antrian tetapi membuat mereka tidak terlihat oleh panggilan ReadAsync lainnya selama periode waktu ketidakvisibilan. Item harus dihapus dari antrian dengan MemoryStoreQueue:RemoveAsync() sebelum waktu ketidakvisibilan default berakhir. Waktu ketidakvis
Parameter
Jumlah item yang akan dilihat.Nilai maksimum dari parameter ini adalah 100.
Mengontrol perilaku metode dalam kasus antrian memiliki kurang dari count item: jika diatur ke false, metode mengembalikan semua item yang tersedia; jika diatur ke true, itu tidak mengembalikan item apa pun.Nilai default adalah false.
Durasi, dalam detik, untuk metode yang akan menunggu jika jumlah item yang diperlukan tidak tersedia segera dalam antrian. Pembacaan dilakukan setiap dua detik selama periode ini. parameter ini dapat diatur ke nol untuk menunjukkan tidak ada tunggu. Jika parameter ini tidak diberikan atau diatur ke -1, metode akan menunggu secara tidak langsung.
Memberikan nilai
Sebuah tuple dua elemen. Elemen pertama adalah array nilai item yang dibaca dari antrian. Elemen kedua adalah identifikasi string yang harus diberikan kepada MemoryStoreQueue:RemoveAsync() untuk menghapus item ini dari antrian secara permanen.
Contoh Kode
local MemoryStoreService = game:GetService("MemoryStoreService")
local DataStoreService = game:GetService("DataStoreService")
local queue = MemoryStoreService:GetQueue("PlayerQueue")
local dataStore = DataStoreService:GetDataStore("PlayerStore")
while true do
pcall(function()
-- wait for an item to process
local items, id = queue:ReadAsync(1, false, 30)
-- check if an item was retrieved
if #items > 0 then
-- mark the item as processed
dataStore:UpdateAsync(items[0], function(data)
data = data or {}
data.processed = 1
return data
end)
-- remove the item from the queue
queue:RemoveAsync(id)
end
end)
end
RemoveAsync
Menghapus item atau item sebelumnya dari antrian. Metode ini menggunakan identifikator yang dikembalikan oleh MemoryStoreQueue:ReadAsync() untuk mengidentifikasi item yang akan dihapus. Jika panggilan ini dijalankan setelah waktu batas invisibilitas berakhir, panggilan ini tidak berpengaruh.
Parameter
Mengidentifikasi item yang akan dihapus. Gunakan nilai yang dikembalikan oleh MemoryStoreQueue:ReadAsync() .
Memberikan nilai
Contoh Kode
local MemoryStoreService = game:GetService("MemoryStoreService")
local DataStoreService = game:GetService("DataStoreService")
local queue = MemoryStoreService:GetQueue("PlayerQueue")
local dataStore = DataStoreService:GetDataStore("PlayerStore")
while true do
pcall(function()
-- wait for an item to process
local items, id = queue:ReadAsync(1, false, 30)
-- check if an item was retrieved
if #items > 0 then
-- mark the item as processed
dataStore:UpdateAsync(items[0], function(data)
data = data or {}
data.processed = 1
return data
end)
-- remove the item from the queue
queue:RemoveAsync(id)
end
end)
end