MemoryStoreHashMap

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ış

MemoryStoreService içinde bir hash haritasına erişim sağlar.Bir hash haritası, dize anahtarlarının rastgele değerlerle bağlantılı olduğu bir koleksiyon parçasıdır (maksimum izin verilen boyuta kadar - Hafıza Düzenleri bakın).Anahtarların sıralama garantisi yoktur.

Özet

Yöntemler

Özellikler

Yöntemler

GetAsync

Variant
Bekletir

Hash haritasındaki bir anahtarın değerini alır.

Parametreler

key: string

Değerini getiristediğiniz anahtar.

Varsayılan değer: ""

Dönüşler

Variant

Değer veya nil anahtar mevcut değilse.

Kod Örnekleri

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
Bekletir

Hash haritasındaki öğeler aracılığıyla sayım yapmak için bir MemoryStoreHashMapPages nesnesi döndürür. Geçerli menzil 1 ila 200 dahil edilir.

Parametreler

count: number

Geri verilebilecek maksimum sayıda öğe.

Varsayılan değer: ""

Dönüşler

Öğeleri örnekleri olarak listeleyen bir örnek.

Kod Örnekleri

The code below lists all the items in a Memory Store Hash Map.

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

()
Bekletir

Bir öğeyi hashed haritasından kaldırır.

Parametreler

key: string

Kaldırmanın kaldır.

Varsayılan değer: ""

Dönüşler

()

Kod Örnekleri

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

Bekletir

Hash haritasındaki bir anahtarın değerini ayarlar ve mevcut bir değeri üzerine yazılır.

Parametreler

key: string

Değeri ayarlanacak anahtar.

Varsayılan değer: ""
value: Variant

Belirlenmesi gereken değer.

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

Eşya saniyeler içinde sona eriyor, ardından eşya otomatik olarak hash haritasından kaldırılıyor.Maksimum son kullanma süresi 45 gündür (3,888,000 saniye).

Varsayılan değer: ""

Dönüşler

Kod Örnekleri

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
Bekletir

Bir anahtarın değerini bir hash haritasından alır ve yeni bir değere güncellemene izin verir.

Bu yöntem mevcut anahtar değerini alan bir geri çağrı işlevini kabul eder ve bunu yeni değer için öğeye dönüştüren bir dönüştürme işlevine geçer, bu istisnalarla:

  • Anahtar mevcut değilse, işleve geçirilen eski değer nil dir.
  • Eğer işlev nil döndürürse, güncelleme iptal edilir.

Yeni değer yalnızca anahtar güncellenmediğinde (örneğin, farklı bir oyun sunucusu tarafından) okunduğu andan itibaren kaydedilir.Değer o sürede değişirse, dönüştürme işlevi en son öğe değeri ile tekrar çağrılır.Bu döngü, değer başarıyla kaydedilene kadar veya dönüştürme işlevi operasyonu iptal etmek için nil geri döne kadar tekrarlanır.

Parametreler

key: string

Değerini güncelleştirmek istediğiniz anahtar.

Varsayılan değer: ""
transformFunction: function

Verdiğiniz dönüştürme işlevi. Bu işlev eski değeri bir giriş olarak alır ve yeni değeri döndürür.

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

Eşya saniyeler içinde sona eriyor, ardından eşya otomatik olarak hash haritasından kaldırılıyor.Maksimum son kullanma süresi 45 gündür (3,888,000 saniye).

Varsayılan değer: ""

Dönüşler

Variant

Dönüşüm işlevi tarafından geri döndürülen son değer.

Kod Örnekleri

This sample updates the count of some resource in a shared inventory. The use of MemoryStoreHashMap:UpdateAsync() ensures that all player contributions make their way into this shared inventory, even if the contributions occur simultaneously. The function enforces a max resource count of 500.

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)

Etkinlikler