MemoryStoreHashMap
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
Fornisce accesso a una mappa hash all'interno di MemoryStoreService . Una mappa hash è una collezione di oggetti in cui le chiavi di stringa sono associati con valori casuali (fino alla dimensione massima consentita -- vedi Memorie Store ). Le chiavi non hanno garanzie di ordinamento.
Sommario
Proprietà
Metodi
Recupera il valore di una chiave nella mappa di hash.
Restituisce un oggetto MemoryStoreHashMapPages per l'elenco attraverso gli elementi nella mappa hash.
Rimuove un elemento dalla mappa di hash.
Imposta il valore di una chiave nella mappa di hash.
Recupera il valore di una chiave da una mappa di hash e ti consente di aggiornarlo a un nuovo valore.
Proprietà
Metodi
GetAsync
Recupera il valore di una chiave nella mappa di hash.
Parametri
La chiave cuyo valore vuoi Recuperare.
Restituzioni
Il valore, o nulla se la chiave non esiste.
Campioni di codice
local MemoryStoreService = game:GetService("MemoryStoreService")
local hashMap = MemoryStoreService:GetHashMap("HashMap1")
local key = "User_1234"
local value = 1000
local expiration = 30
local setSuccess, _ = pcall(function()
return hashMap:SetAsync(key, value, expiration)
end)
if setSuccess then
print("Set succeeded!")
end
local item
local getSuccess, getError = pcall(function()
item = hashMap:GetAsync(key)
end)
if getSuccess then
print(item)
else
warn(getError)
end
ListItemsAsync
Restituisce un oggetto MemoryStoreHashMapPages per l'elenco attraverso gli elementi nella mappa hash. La gamma valida è 1 a 200 inclusi.
Parametri
Numero massimo di oggetti possibili che possono essere restituiti.
Restituzioni
Un'istanza MemoryStoreHashMapPages che elenca gli elementi come MemoryStoreHashMapPages istanze.
Campioni di codice
local MemoryStoreService = game:GetService("MemoryStoreService")
local testHashMap = MemoryStoreService:GetHashMap("HashMap1")
local EXPIRATION = 600
local NUM_TEST_ITEMS = 32
local function populateHashMap(hashMap: MemoryStoreHashMap, numItems: number): { [string]: any }
print("Setting HashMap data...")
local createdItems = {}
for index = 1, numItems do
local key = tostring(index) -- HashMap keys must be strings
local value = `{key}_test_value`
local success, result = pcall(hashMap.SetAsync, hashMap, key, value, EXPIRATION)
if success then
createdItems[key] = value
else
warn(`Error setting key {key}: {result}`)
end
end
print("Done setting HashMap data.")
return createdItems
end
local function getItemsFromAllPages(pages: MemoryStoreHashMapPages): { [string]: any }
-- Purely for logging purposes, we track what page number we're on
local currentPageNumber = 1
local retrievedItems = {}
while not pages.IsFinished do
print(`Getting items on page {currentPageNumber}...`)
local items = pages:GetCurrentPage()
for _, entry in pairs(items) do
print(`\t{entry.key}: {entry.value}`)
retrievedItems[entry.key] = entry.value
end
-- Advance pages if there are more pages to read
if not pages.IsFinished then
pages:AdvanceToNextPageAsync()
currentPageNumber += 1
end
end
print("Finished reading all pages")
return retrievedItems
end
local function compareAllItems(retrievedItems: { [string]: any }, expectedItems: { [string]: any }): number
print("Comparing retrieved items to expected items...")
local numMatchingItems = 0
for key, expectedValue in pairs(expectedItems) do
if retrievedItems[key] == expectedValue then
numMatchingItems += 1
else
warn(`Mismatched retrieved value for key {key}: expected {expectedValue}, retrieved {retrievedItems[key]}`)
end
end
print("Comparison complete!")
return numMatchingItems
end
-- Keys added to the hashmap are also added to this expectedItems table.
-- Later, the retrieved hashmap items will be compared against this table of expected items.
local expectedItems = populateHashMap(testHashMap, NUM_TEST_ITEMS)
-- Getting pages can error. In this case, we will let it error and stop program execution,
-- but you may want to pcall it and handle it differently.
print(`Getting HashMap pages with ListItemsAsync...`)
local pages = testHashMap:ListItemsAsync(NUM_TEST_ITEMS)
local retrievedItems = getItemsFromAllPages(pages)
local numMatchingItems = compareAllItems(retrievedItems, expectedItems)
-- If there were no errors setting or getting items, all items should match.
print(`Program complete. {numMatchingItems}/{NUM_TEST_ITEMS} retrieved items matched the expected values.`)
RemoveAsync
Rimuove un elemento dalla mappa di hash.
Parametri
La chiave per Rimuovere.
Restituzioni
Campioni di codice
local MemoryStoreService = game:GetService("MemoryStoreService")
local hashMap = MemoryStoreService:GetHashMap("HashMap1")
local key = "User_1234"
local value = 1000
local expiration = 30
local setSuccess, setError = pcall(function()
return hashMap:SetAsync(key, value, expiration)
end)
if not setSuccess then
warn(setError)
end
local removeSuccess, removeError = pcall(function()
hashMap:RemoveAsync(key)
end)
if removeSuccess then
print("Remove succeeded!")
else
warn(removeError)
end
SetAsync
Imposta il valore di una chiave nella mappa di hash, sovrascrive qualsiasi valore esistente.
Parametri
La chiave il cui valore è Impostare.
Il valore da Impostare.
L'esaurimento dell'elemento in secondi, dopo cui l'elemento viene automaticamente rimosso dalla mappa di hash. Il massimo tempo di scadenza è 45 giorni (3.888.000 secondi).
Restituzioni
Campioni di codice
local MemoryStoreService = game:GetService("MemoryStoreService")
local hashMap = MemoryStoreService:GetHashMap("HashMap1")
local key = "User_1234"
local value = 1000
local expiration = 30
local setSuccess, setError = pcall(function()
return hashMap:SetAsync(key, value, expiration)
end)
if setSuccess then
print("Set succeeded!")
else
warn(setError)
end
UpdateAsync
Recupera il valore di una chiave da una mappa di hash e ti consente di aggiornarlo a un nuovo valore.
Questo metodo accetta una funzione di richiamata che recupera il valore di chiave esistente e lo passa a una funzione di trasformazione, che restituisce il nuovo valore per l'Articolo, con queste eccezioni:
- Se la chiave non esiste, il valore vecchio passato alla funzione è null.
- Se la funzione restituisce null, l'aggiornamento è annullato.
Il nuovo valore viene salvato solo se la chiave non è stata aggiornata (ad esempio, da un altro Serverdi gioco) dal momento in cui è stata letta. Se il valore cambia in quel momento, la funzione di trasformazione viene chiamata nuovamente con il valore dell'elemento più recente. Questo ciclo si ripetisce fino a quando il valore non viene salvato con successo o la funzione di trasformazione restituisce nil per annullare l'operazione.
Parametri
La chiave il cui valore vuoi Aggiornarmento.
La funzione di trasformazione, che Fornire. Questa funzione prende il vecchio valore come input e restituisce il nuovo valore.
L'esaurimento dell'elemento in secondi, dopo cui l'elemento viene automaticamente rimosso dalla mappa di hash. Il massimo tempo di scadenza è 45 giorni (3.888.000 secondi).
Restituzioni
L'ultimo valore restituito dalla funzione di trasformazione.
Campioni di codice
local MemoryStoreService = game:GetService("MemoryStoreService")
local hashMap = MemoryStoreService:GetHashMap("ResourceInventory")
local function contributeResources(itemResource, addedCount)
local success, newResourceCount = pcall(function()
return hashMap:UpdateAsync(itemResource, function(resource)
resource = resource or {count = 0}
resource.count = resource.count + addedCount
-- ensure we don't exceed the maximum resource count
if resource.count > 500 then
resource.count = 500
end
return resource
end, 1200)
end)
if success then
print(newResourceCount)
end
end
contributeResources("myResource", 50)