学习
引擎类
MemoryStoreHashMap
无法创建
未复制

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处


概要
方法
GetAsync(key: string):Variant
SetAsync(key: string,value: Variant,expiration: number):boolean
UpdateAsync(key: string,transformFunction: function,expiration: number):Variant
继承成员

API 参考
方法
GetAsync
暂停
功能: DataStore
MemoryStoreHashMap:GetAsync(key:string):Variant
参数
key:string
返回
Variant
代码示例
从 MemoryStore 哈希图获取数据
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("设置成功!")
end
local item
local getSuccess, getError = pcall(function()
item = hashMap:GetAsync(key)
end)
if getSuccess then
print(item)
else
warn(getError)
end

ListItemsAsync
暂停
功能: DataStore
MemoryStoreHashMap:ListItemsAsync(count:number):MemoryStoreHashMapPages
参数
count:number
代码示例
列出内存商店哈希映射中的项目
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("正在设置 HashMap 数据...")
local createdItems = {}
for index = 1, numItems do
local key = tostring(index) -- HashMap 键必须是字符串
local value = `{key}_test_value`
local success, result = pcall(hashMap.SetAsync, hashMap, key, value, EXPIRATION)
if success then
createdItems[key] = value
else
warn(`设置键 {key} 时出错: {result}`)
end
end
print("完成设置 HashMap 数据.")
return createdItems
end
local function getItemsFromAllPages(pages: MemoryStoreHashMapPages): { [string]: any }
-- 仅用于日志记录,我们跟踪当前是第几页
local currentPageNumber = 1
local retrievedItems = {}
while not pages.IsFinished do
print(`正在获取第 {currentPageNumber} 页的项目...`)
local items = pages:GetCurrentPage()
for _, entry in pairs(items) do
print(` {entry.key}: {entry.value}`)
retrievedItems[entry.key] = entry.value
end
-- 如果还有更多页面可读,则提前读页面
if not pages.IsFinished then
pages:AdvanceToNextPageAsync()
currentPageNumber += 1
end
end
print("已完成读取所有页面")
return retrievedItems
end
local function compareAllItems(retrievedItems: { [string]: any }, expectedItems: { [string]: any }): number
print("正在比较检索到的项目和预期项目...")
local numMatchingItems = 0
for key, expectedValue in pairs(expectedItems) do
if retrievedItems[key] == expectedValue then
numMatchingItems += 1
else
warn(`键 {key} 的检索值不匹配: 预期 {expectedValue}, 检索到 {retrievedItems[key]}`)
end
end
print("比较完成!")
return numMatchingItems
end
-- 添加到 hashmap 的键也会添加到这个 expectedItems 表中。
-- 之后,将检索到的 hashmap 项目与此预期项目表进行比较。
local expectedItems = populateHashMap(testHashMap, NUM_TEST_ITEMS)
-- 获取页面时可能会出错。在这种情况下,我们将让它出错并停止程序执行,
-- 但是您可能希望使用 pcall 来处理它。
print(`正在使用 ListItemsAsync 获取 HashMap 页面...`)
local pages = testHashMap:ListItemsAsync(NUM_TEST_ITEMS)
local retrievedItems = getItemsFromAllPages(pages)
local numMatchingItems = compareAllItems(retrievedItems, expectedItems)
-- 如果设置或获取项目时没有错误,所有项目都应该匹配。
print(`程序完成。{numMatchingItems}/{NUM_TEST_ITEMS} 个检索到的项目与预期值匹配.`)

RemoveAsync
暂停
功能: DataStore
MemoryStoreHashMap:RemoveAsync(key:string):()
参数
key:string
返回
()
代码示例
从 MemoryStore 哈希映射中移除数据
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("移除成功!")
else
warn(removeError)
end

SetAsync
暂停
功能: DataStore
MemoryStoreHashMap:SetAsync(
key:string, value:Variant, expiration:number
参数
key:string
value:Variant
expiration:number
返回
代码示例
向 MemoryStore 哈希图添加数据
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("设置成功!")
else
warn(setError)
end

UpdateAsync
暂停
功能: DataStore
MemoryStoreHashMap:UpdateAsync(
key:string, transformFunction:function, expiration:number
):Variant
参数
key:string
transformFunction:function
expiration:number
返回
Variant
代码示例
更新内存存储哈希图
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
-- 确保我们不超过最大资源数量
if resource.count > 500 then
resource.count = 500
end
return resource
end, 1200)
end)
if success then
print(newResourceCount)
end
end
contributeResources("myResource", 50)

©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。