MemoryStoreHashMap

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Nicht erstellbar
Nicht repliziert

Bietet Zugriff auf eine HasMap innerhalb von MemoryStoreService. Eine HasMap ist eine Sammlung von Elementen, in der Stringschlüssel mit beliebigen Werten (bis zum maximalen erlaubten Size -- siehe Speicherstores ) verbunden sind. Die Schlüssel haben keine Sortiergarantien.

Zusammenfassung

Methoden

Eigenschaften

Methoden

GetAsync

Variant
Angehalten

Besetzt den Wert eines Schlüssels in der Hashen-Karte.

Parameter

key: string

Der Schlüssel, dessen Wert du abrufenmöchtest.


Rückgaben

Variant

Der Wert, oder null, wenn der Schlüssel nicht existiert.

Code-Beispiele

Getting data from a MemoryStore Hash Map

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
Angehalten

Gibt ein MemoryStoreHashMapPages Objekt zurück, um durch Elemente in der Hashen-Karte zu nummerieren. Die gültige Reichweite beträgt 1 bis 200, einschließlich.

Parameter

count: number

Maximum mögliche Anzahl von Gegenständen, die zurückgegeben werden können.


Rückgaben

Eine MemoryStoreHashMapPages Instanz, die die Elemente als MemoryStoreHashMapPages Instanzen listet.

Code-Beispiele

Listing items in a MemoryStore Hash Map

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

void
Angehalten

Entfernt einen Gegenstand von der Hashen-Karte.

Parameter

key: string

Der Schlüssel zum entfernen.


Rückgaben

void

Code-Beispiele

Removing data from a MemoryStore Hash Map

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

Angehalten

Setzt den Wert eines Schlüssels in der Hashen-Karte, überschreibt den bestehenden Wert.

Parameter

key: string

Der Schlüssel, dessen Wert zum festlegen.

value: Variant

Der Wert, der festlegenwird.

expiration: number

Gegenstand-Expiration in Sekunden, nach der der Gegenstand automatisch aus der Hashen-Karte entfernt wird. Die maximale Expiry-Zeit beträgt 45 Tage (3.888.000 Sekunden).


Rückgaben

Code-Beispiele

Adding data to a MemoryStore Hash Map

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

Variant
Angehalten

Rufe den Wert eines Schlüssels aus einer HasMap ab und lass ihn zu einem neuen Wert aktualisieren.

Diese Methode akzeptiert eine Rückruf-Funktion, die den bestehenden Schlüsselwert abruft und ihn an eine Transform-Funktion weitergibt, die den neuen Wert für das Artikelzurückgibt, mit diesen Ausnahmen:

  • Wenn der Schlüssel nicht existiert, ist der alte Wert, der dem Funktionsbereich übergeben wurde, null.
  • Wenn die Funktion null zurückgibt, wird das Update abgebrochen.

Der neue Wert wird nur gespeichert, wenn der Schlüssel nicht aktualisiert wurde (z. B. durch einen anderen Server), seitdem der Wert gelesen wurde. Wenn der Wert in dieser Zeit geändert wurde, ruft die Transform-Funktion erneut mit dem neuesten Item-Wert auf. Dieser Zyklus wiederholt sich, bis der Wert erfolgreich gespeichert wird oder die Transform-Funktion nil zurückruft, um die Operation abzubrechen.

Parameter

key: string

Der Schlüssel, dessen Wert Sie Updatemöchten.

transformFunction: function

Die Transform-Funktion, die Sie angeben. Diese Funktion nimmt den alten Wert als Eingabe und gibt den neuen Wert zurück.

expiration: number

Gegenstand-Expiration in Sekunden, nach der der Gegenstand automatisch aus der Hashen-Karte entfernt wird. Die maximale Expiry-Zeit beträgt 45 Tage (3.888.000 Sekunden).


Rückgaben

Variant

Der letzte Wert, der von der Transform-Funktion zurückgegeben wird.

Code-Beispiele

Updating a Memory Store Hash Map

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)

Ereignisse