Bir sıra lineer bir veri yapısıdır ve bir topluluk içerir: ilk giren ilk çıkan (FIFO) prensibini takip eder veya önceden tanımlanmış kriterlere dayalı olarak elemanları önceliklendirir.Hafıza depoları iki tür sırayı destekler, FIFO normal sıralar ve öncelikli sıralar.Her iki tür de boş bir sırayı başlatmak, sıraya veri eklemek, sıradan verileri okumak ve sıradan verileri kaldırmak için aynı işlevleri paylaşır: boş bir sıra başlatmak, sıraya veri eklemek, sıradan verileri okumak ve sıradan verileri kaldırmak.
Hafıza depolama sıraları, istediğiniz kriterlere dayalı olarak eşleşmeyi kolaylaştırmak ve kullanıcı bilgilerini saklamak için sipariş tabanlı işlemler ve beceri seviyeleri gibi kullanıcı bilgileri için yararlıdır.Örneğin, deneyiminizin başlangıç yeri olarak bir lobi yeri ekleyebilir, çok sayıda sunucuya erişebilen merkezi bir kullanıcı bilgi depolama sistemi olarak bellek depolama sıralarını kullanabilir, sıraları kullanan kullanıcıların yerleştirme sırasını yönetebilir ve eşleşmeyi tamamlayan kullanıcıları deneyiminizin ana yerine ışınlayabilirsiniz.
Bir sıra alın
Bir sıra almak için, herhangi bir senaryonun erişimdeneyim içinde küresel olan bir adı ve seçici bir görünmezlik süresi saniye ile çağrın, ki bu aynı sıra öğesinin yinelenen işlemine izin vermez.Görünmezlik süresi varsayılan olarak aşağıdaki kod örneği gibi boş bırakırsanız 30 saniyedir.
Boş bir sıra almak
local MemoryStoreService = game:GetService("MemoryStoreService")local queue = MemoryStoreService:GetQueue("Queue1")
Bir sıra bir öğeyi işlerken, görünmezlik süresi öğeye uygulanır ve öğe diğer sunucular tarafından işlenirken çoklu sunucular tarafından görünmez hale gelir, çünkü sıra aynı anda güncellenebilir.Görünmezlik süresi boyunca bir öğe için hem okuma hem de kaldırma işlemlerini tamamlaması beklenmesine rağmen, süre dolduktan sonra öğenin kuyruğa kalmasına neden olan bir hata oluşursa, öğeler tekrar işlenmek üzere görünür hale gelir.Bunu yaparken, görünmezlik süresi sonu garantisi, beklenmedik sorunlar meydana gelirse bile sırada bulunan tüm öğelerin hala işlenebileceğini garanti eder.
Bir sıra aldıktan sonra, içinde veri okumak veya yazmak için aşağıdaki işlevlerden herhangi birini çağırın:
Fonksiyon | Eylem |
---|---|
MemoryStoreQueue:AddAsync() | Ekleyin sıraya yeni bir öğe. |
MemoryStoreQueue:ReadAsync() | Tek bir işlem olarak sıradan bir veya daha fazla öğeyi oku. |
MemoryStoreQueue:RemoveAsync() | Çıkar sıraya daha önce okunan bir veya daha fazla öğe kaldırın. |
Veri ekleyin
Sıraya yeni bir öğe eklemek için, öğe değeri, saniyeler içinde bir son kullanma süresi ve seçici bir öğe önceliği ile MemoryStoreQueue:AddAsync() 'yi arayın.Sıranızı FIFO sırasında tutmak istiyorsanız, önceliği boş bırakabilir veya 0 geçirebilirsiniz.
Bir sıraya veri eklemek
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
Verileri okuyup kaldırma
Sırada bir veya daha fazla öğeyi aynı anda okumak için, MemoryStoreQueue:ReadAsync() 'yi arayın, bu da okunan öğeyi temsil eden bir id döndürür.Eşyaları işlemeyi bitirdiğinizde, hemen MemoryStoreQueue:RemoveAsync() onları sıraydan id silmek için çağırın.Bu, bir öğeyi asla birden fazla işlemediğinizden emin olur.Sürekli bir sıraya eklenen tüm öğeleri yakalamak ve yanıt vermek için, aşağıdaki kod örneği gibi bir döngü dahil edin:
Döngü ile Sıraya Verilen Verileri Okuma ve Kaldırma
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
-- Sıra işleme döngüsü
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