MemoryStoreQueue
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
Fournit un accès à une file d'attente dans le stockage de mémoire. Une file d'attente est une structure de données qui fournit un stockage temporaire pour des éléments arbitraires (taille maximale de l'élément -- voir limites de stockage de mémoire ). Chaque élément de la file d'attente a une priorité numérique : le stockage de mémoire récupère les éléments avec une priorité plus élevée d'abord, et il récupère les éléments avec la même priorité dans l'ordre de l'ajout
Les éléments dans la file d'attente peuvent être optionnellement configurés pour expirer après un certain lapse de temps. Les éléments expirés disparaissent de la file d'attente comme s'ils n'étaient jamais ajoutés.
Résumé
Méthodes
Ajoute un élément à la file d'attente.
Lit un ou plusieurs éléments de la file d'attente.
Supprime un élément ou des éléments lus précédemment de la file d'attente.
Propriétés
Méthodes
AddAsync
Ajoute un élément à la file d'attente.
Paramètres
La valeur de l'élément à ajouter à la file d'attente.
Temps d'expiration de l'article, en secondes, après lequel l'article sera automatiquement supprimé de la file d'attente.
Priorité des éléments. Les éléments avec une plus grande priorité sont récupérés dans la file d'attente avant les éléments avec une plus faible priorité.
Retours
ReadAsync
Lit un ou plusieurs éléments de la file d'attente comme une seule opération atomique.
Cette méthode ne supprime pas automatiquement les éléments retournés de la file d'attente, mais les rend invisibles pour les autres appels ReadAsync pendant la période de l'invisibilité. Les éléments doivent être explicitement retirés de la file d'attente avec MemoryStoreQueue:RemoveAsync() avant que l'invisibilité expire. La valeur d'invisibilité par défaut est de 30 secondes, sauf si une autre vale
Paramètres
Nombre d'éléments à lu. La valeur maximale de ce paramètre est 100.
Contrôle le comportement de la méthode dans le cas où la file d'attente a moins de count éléments : si la valeur est réglée sur false, la méthode renvoie tous les éléments disponibles ; si la valeur est réglée sur true, elle renvoie aucun élément. La valeur par défaut est false.
La durée, en secondes, pendant laquelle la méthode attendra si le nombre requis d'objets n'est pas immédiatement disponible dans la file d'attente. Les tentatives de lecture sont effectuées toutes les deux secondes pendant cette période. Ce paramètre peut être réglé sur zéro pour indiquer qu'il n'y a pas d'attente. Si ce paramètre n'est pas fourni ou réglé sur -1, la méthode attendra infiniment.
Retours
Un tableau de deux éléments. Le premier élément est un tableau de valeurs d'objet lues de la file d'attente. Le deuxième élément est un identifiant de chaîne qui doit être passé à MemoryStoreQueue:RemoveAsync() pour supprimer définitivement ces éléments de la file d'attente.
Échantillons de code
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
Supprime un élément ou des éléments lus précédemment de la file d'attente. Ce méthode utilise l'identifiant renvoyé par MemoryStoreQueue:ReadAsync() pour identifier les éléments à retirer. Si appelé après l'expiration du délai d'invisibilité, l'appel n'a aucun effet.
Paramètres
Identifie les éléments à supprimer. Utilisez la valeur renvoyée par MemoryStoreQueue:ReadAsync() .
Retours
Échantillons de code
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