MemoryStoreHashMap
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Cung cấp quyền truy cập vào bản đồ hash trong MemoryStoreService . Một bản đồ hash là một bộ sưu tập các mục được liên kết với các giá trị ngẫu nhiên (lên đến kích thước tối đa cho phép -- xem Những khoảng để lưu trữ). Các chìa khóa không có đ
Tóm Tắt
Phương Pháp
Lấy giá trị của một chìa khóa trong bảng mã hóa.
Điều khiển trả lại một MemoryStoreHashMapPages đối tượng cho mục đích đếm thông qua các mục trong bảng đếm.
Loại bỏ một mục từ bản đồ hash.
Đặt giá trị của một chìa khóa trong bảng mã hóa.
Lấy giá trị của một chìa khóa từ bảng hiệu suất và cho phép bạn cập nhật nó thành giá trị mới.
Thuộc Tính
Phương Pháp
GetAsync
Lấy giá trị của một chìa khóa trong bảng mã hóa.
Tham Số
Chìa khóa mà bạn muốn lấy lại giá trị.
Lợi Nhuận
Giá trị, hoặc nil nếu không có chìa khóa.
Mẫu mã
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
Đ반환 một MemoryStoreHashMapPages đối tượng để đếm thông qua các mục trong bảng dữ liệu. Phạm vi hợp lệ là 1 đến 200 bao gồm.
Tham Số
Số lượng tối đa các mục có thể được trả lại.
Lợi Nhuận
Một MemoryStoreHashMapPages instance đếm đồ vật như MemoryStoreHashMapPages instances.
Mẫu mã
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
Loại bỏ một mục từ bản đồ hash.
Tham Số
Chìa khóa để xóa.
Lợi Nhuận
Mẫu mã
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
Đặt giá trị của một chìa khóa trong bản đồ hash, viết đổi bất kỳ giá trị nào hiện tại.
Tham Số
Chìa khóa có giá trị để cài đặt.
Giá trị để cài đặt.
Vật phẩm expirer trong giây, sau đó vật phẩm sẽ tự động được xóa khỏi bản đồ hash. Thời gian expirer tối đa là 45 ngày (3,888,000 giây).
Lợi Nhuận
Mẫu mã
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
Lấy giá trị của một chìa khóa từ bảng hiệu suất và cho phép bạn cập nhật nó thành giá trị mới.
Phương thức này mấy chức năng gọi động để lấy giá trị chìa khóa hiện tại và truyền cho một chức năng biến hóa, mà trả lại giá trị mới cho vật phẩm, với những ngoại lệ này:
- Nếu chìa khóa không tồn tại, giá trị cũ đã được truyền cho hàm là nil.
- Nếu hàm này trả về nil, hành update bị huỷ.
Giá trị mới được lưu chỉ nếu chìa khóa đã không được cập nhật (như, bởi một máy chủ trò chơi khác) kể từ khi nó được đã xem. Nếu giá trị thay đổi trong thời gian đó, hàm biến hồi được gọi lại với giá trị gần nhất. Vòng lặp này
Tham Số
Chìa khóa có giá trị bạn muốn cập nhật.
Hàm biến, mà bạn cung cấp. Hàm này nhận giá trị cũ làm tham chiếu và trả lại giá trị mới.
Vật phẩm expirer trong giây, sau đó vật phẩm sẽ tự động được xóa khỏi bản đồ hash. Thời gian expirer tối đa là 45 ngày (3,888,000 giây).
Lợi Nhuận
Giá trị cuối cùng được trả bởi chức năng biến hóa.
Mẫu mã
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)