MemoryStoreQueue

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oluşturulamaz
Çoğaltılmamış

MemoryStore içinde bir sıraya erişim sağlar.Bir sıra, rastgele öğeler için geçici depolama sağlayan bir veri yapısıdır (maksimum öğe boyutuna kadar - Hafıza Depolama Sınırlarına bakın ).Her sıra öğesi sayısal bir önceliğe sahiptir: MemoryStore öncelikle daha yüksek önceliğe sahip öğeleri sıradan alır ve aynı önceliğe sahip öğeleri ek sırayla alır.

Sırada bulunan öğeler, belirli bir süre sonra sona ermek üzere seçeneğe bağlı olarak ayarlanabilir.Süresi dolmuş öğeler, aslında hiç eklenmemiş gibi sıradan kaybolur.

Özet

Yöntemler

Özellikler

Yöntemler

AddAsync

()
Bekletir

Sıraya bir öğe ekler.

Parametreler

value: Variant

Sıraya eklenmesi gereken öğenin değeri.

Varsayılan değer: ""
expiration: number

Eşyanın son kullanma süresi, saniyeler içinde, ardından eşya otomatik olarak sıradan kaldırılacak.

Varsayılan değer: ""
priority: number

Eşya önceliği. Daha yüksek önceliğe sahip eşyalar, daha düşük önceliğe sahip eşyalardan önce sırada alınır.

Varsayılan değer: 0

Dönüşler

()

ReadAsync

Bekletir

Sıradaki bir veya daha fazla öğeyi tek bir atomik işlem olarak okur.

Bu yöntem, döndürülen öğeleri otomatik olarak kuyruktan silmez, ancak görünmezlik süresi için diğer ReadAsync çağrıları için görünmez hale getirir.Öğeler, görünmezlik süresi dolmadan önce açıkça kuyruktan kaldırılmalıdır MemoryStoreQueue:RemoveAsync() invisibility timeout süresi dolmadan önce.Görünmezlik süresi sona eriş süresi, MemoryStoreService:GetQueue() farklı bir değer sağlanmadıkça 30 saniye olarak ayarlanır.

Parametreler

count: number

okuöğe sayısı. Bu parameternin maksimum izin verilen değeri 100'dür.

Varsayılan değer: ""
allOrNothing: boolean

Sıra count öğeden daha az olduğunda, yöntemin davranışını kontrol eder: yanlış olarak ayarlanırsa, tüm mevcut öğeleri döndürür; doğru olarak ayarlanırsa, hiçbir öğe döndürmez.Varsayılan değer false'dur.

Varsayılan değer: false
waitTimeout: number

Yöntemin, gerekli sayıda öğe hemen mevcut olmadığında bekleyeceği süre, saniyeler içinde. süre, saniyeler içinde.Okumalar bu süre boyunca her iki saniye içinde denelenir.Bu değer, bekleme olmadığını göstermek için sıfıra ayarlanabilir.Bu değer sağlanmaz veya -1 olarak ayarlanmazsa, yöntem süresiz bekleyecektir.

Varsayılan değer: -1

Dönüşler

İki elemanlı bir tuplu.İlk eleman, sırktan okunan bir dizi öğe değeridir.İkinci eleman, kuyruktan kalıcı olarak bu öğeleri kaldırmak için MemoryStoreQueue:RemoveAsync() geçmesi gereken bir dize tanımlayıcıdır.

Kod Örnekleri

The following code sample demonstrates using MemoryStoreQueue:ReadAsync() and MemoryStoreQueue:RemoveAsync() to reliably read, process, and remove items from a queue. Though this process can be as complicated as necessary, this example simply sets a flag in the corresponding data store item, which guarantees that every item will eventually be processed even if some of the calls encounter errors or the server crashes:

Depending on where the failure happens, it's possible that an item will be processed more than once. You should account for that like the following code sample, in which the end result is the same even if DataStoreService:UpdateAsync() is invoked multiple times.

Using a MemoryStoreQueue

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

()
Bekletir

Sıradan önce okunan bir veya daha fazla öğeyi kaldırır.Bu yöntem, kaldırılacak öğeleri tanımlamak için MemoryStoreQueue:ReadAsync() tarafından döndürülen tanımlayıcıyı kullanır.Görünmezlik süresi dolduktan sonra çağrılırsa, çağrının bir etkisi yoktur.

Parametreler

id: string

Silinecek öğeleri tanımlar. MemoryStoreQueue:ReadAsync() tarafından döndürülen değeri sil.

Varsayılan değer: ""

Dönüşler

()

Kod Örnekleri

The following code sample demonstrates using MemoryStoreQueue:ReadAsync() and MemoryStoreQueue:RemoveAsync() to reliably read, process, and remove items from a queue. Though this process can be as complicated as necessary, this example simply sets a flag in the corresponding data store item, which guarantees that every item will eventually be processed even if some of the calls encounter errors or the server crashes:

Depending on where the failure happens, it's possible that an item will be processed more than once. You should account for that like the following code sample, in which the end result is the same even if DataStoreService:UpdateAsync() is invoked multiple times.

Using a MemoryStoreQueue

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

Etkinlikler