แผนที่ร้านค้าหน่วยความจำ

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

แมพรัศมีแฮช คล้ายกับแมพรัศมีที่เรียบเรียงให้คุณเก็บข้อมูลในหน่วยความจำเป็นคู่ ในขณะที่แมพรัศมีที่เรียบเรียง จะไม

ข้อจํากัด

แมพแฮชมีขนาดของกุญแจ 128 ตัวอักษรและขนาดของค่า 32 KB

ในกรณีอื่น ๆ หากไม่ใช่แล้วแผนที่แฮชจะใช้เดียวกัน คำขอ API และ ความจำ ขีดจำกัดเช่นเดียวกับโครงสร้างข้อมูลสตรีมอื่น ๆ

รับแผนที่แฮช

เพื่อรับแผนภาพแฮช โทร Class.MemoryStoreService:Get:`Class.MemoryStoreService:Get:` และใช้ชื่อสำหรับแผนภาพแฮช ชื่อเป็นส่วนตัวภายในประสบการณ์ดังนั้นคุณจึงสามารถเข้าถึงแผนภาพแฮชเดียวกันในสคริปต์ที่ใช้ชื่อนี้ได้ทุ

รับแผนที่แฮช

local MemoryStoreService = game:GetService("MemoryStoreService")
local hashMap = MemoryStoreService:GetHashMap("HashMap1")

หลังจากที่คุณได้รับแผนที่แฮชให้โทรหาหนึ่งในตัวอักษรต่อไปนี้เพื่ออ่านหรือเขียนข้อมูลในนั้น:

ฟังก์ชันการกระทํา
MemoryStoreHashMap:SetAsync()เพิ่ม กุญแจใหม่หรือเขียนเครื่องมือมากขึ้นหากกุญแจนี้มีอยู่แล้ว
MemoryStoreHashMap:GetAsync()อ่าน กุญแจที่เฉพาะ
MemoryStoreHashMap:ListItemsAsync()รายการรายการในแผนที่แฮช รายการ
MemoryStoreHashMap:UpdateAsync()อัปเดต ค่าของกุญแจหลังจากดึงมันจากแผนที่แฮช
MemoryStoreHashMap:RemoveAsync()ลบ กุญแจจากแผนที่แฮช

การเพิ่มหรือเขียนข้อมูล

เพื่อเพิ่มรหัสใหม่หรือเขียนค่ารหัสในแผนที่แฮชด้วย MemoryStoreHashMap:SetAsync() โดยใช้ชื่อ ชื่อของคีย์ ค่า ของคีย์ และเว

การเพิ่มข้อมูลลงแผนที่แฮช

local MemoryStoreService = game:GetService("MemoryStoreService")
local hashMap = MemoryStoreService:GetHashMap("HashMap1")
local setSuccess, _ = pcall(function()
return hashMap:SetAsync("User_1234", 1000, 30)
end)
if setSuccess then
print("Set succeeded.")
end

รับข้อมูล

คุณสามารถรับค่าที่เกี่ยวข้องกับกุญแจที่กำหนดหรือรับคู่ค่ากุญแจหลายตัวในแผนที่แฮช

รับข้อมูลด้วยกุญแจหนึ่ง

เพื่อรับค่าที่เกี่ยวข้องกับหนึ่งกุญแจจากแผนที่แฮช, โทร MemoryStoreHashMap:GetAsync() ด้วยกุญแจ ชื่อ .

รับรหัสที่เฉพาะจากแผนที่แฮช

local MemoryStoreService = game:GetService("MemoryStoreService")
local hashMap = MemoryStoreService:GetHashMap("HashMap1")
local setSuccess, _ = pcall(function()
return hashMap:SetAsync("User_1234", 1000, 30)
end)
if setSuccess then
print("Set succeeded.")
end
local item
local getSuccess, getError = pcall(function()
item = hashMap:GetAsync("User_1234")
end)
if getSuccess then
print(item)
else
warn(getError)
end

รับข้อมูลด้วยคู่ค่า Value หลาย

เพื่อรวบรวมคู่ค่าทั้งหมดจากแผนที่แฮชเป็นการดำเนินการเดียวคุณสามารถเรียก MemoryStoreHashMap:ListItemsAsync() ด้วยขนาดหน้าที่ต้องการ โดยปกติฟังก์ชันนี้จะรวบรวมคุณสมบัติทั้งหม

รายการรายการในแผนที่แฮช

local MemoryStoreService = game:GetService("MemoryStoreService")
local hashMap = MemoryStoreService:GetHashMap("HashMap1")
-- รับรายการรายการไอเท็ม, 32 รายการในแต่ละครั้ง
local success, pages = pcall(function()
return hashMap:ListItemsAsync(32)
end)
if success then
while true do
-- รับหน้าปัจจุบัน
local entries = pages:GetCurrentPage()
-- ทำซ้ำผ่านคู่ค่าทั้งหมดในหน้า
for _, entry in ipairs(entries) do
print(entry.key .. " : " .. tostring(entry.value))
end
-- ตรวจสอบว่าหน้าล่าสุดถึงแล้ว
if pages.IsFinished then
break
else
print("---------")
-- ก้าวไปยังหน้าต่อไป
pages:AdvanceToNextPageAsync()
end
end
end

การปรับปรุงข้อมูล

เพื่อดึงค่าของกุญแจจากแผนที่แฮชและปรับปรุงมัน โปรดเรียก MemoryStoreHashMap:UpdateAsync() ด้วยกุญแจ ชื่อ และคุณสมบัติ ฟังก์ชัน คีย์

สำหรับประสบการณ์ส่วนใหญ่ หลายเซิร์ฟเวอร์สามารถปรับปรุงคีย์เดียวกันได้พร้อมกันและเปลี่ยนค่า เมื่อใดก็ตามที่ UpdateAsync() จะเปลี่ยนแปลงค่าล่าสุดก่อนที่จะปรับป

คลังไอเท็มUpdateAsync() ให้แน่ใจว่าการบริจาคของผู้เล่นทุกรายจะ

การปรับปรุงจำนวนทรัพยากรสําหรับทรัพยากรในคลังข้อมูลร่วม

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

ความแลคสำหรับ UpdateAsync() คล้ายกับ GetAsync() และ SetAsync() ยกเว้นจะมีการรวมกัน

เมื่อเกิดความคุ้มครอง ระบบจะทำงานอีกครั้งจนกว่าจะเกิดสิ่งหนึ่งในสามนี้: การดำเนินการสำเร็จ การโทรกลับฟังก์ชันกลับไปยัง nil หรือสูงสุดจำนวนการโทรกลับถึงจุดสูงสุด หากระบบเข้าถึงจุด

การลบข้อมูล

คุณสามารถใช้ MemoryStoreHashMap:RemoveAsync() สำหรับทั้งสองการลบหนึ่งคีย์ออกจากแผนที่แฮชและลบข้อมูลทั้งหมดในแผนที่แฮชของสโตรเจค

การลบกุญแจ

เพื่อลบรหัสออกจากแผนที่แฮช, โทร MemoryStoreHashMap:RemoveAsync() ด้วยรหัส ชื่อ ของรหัส

ลบกุญแจจากแผนที่แฮช

local MemoryStoreService = game:GetService("MemoryStoreService")
local hashMap = MemoryStoreService:GetHashMap("HashMap1")
local setSuccess, _ = pcall(function()
return hashMap:SetAsync("User_1234", 1000, 30)
end)
if setSuccess then
print("Set succeeded.")
end
local removeSuccess, removeError = pcall(function()
hashMap:RemoveAsync("User_1234")
end)
if not removeSuccess then
warn(removeError)
end

การลบข้อมูลทั้งหมด

เพื่อลบข้อมูลทั้งหมดในแผนที่แฮช, รายการรายการของคุณด้วย MemoryStoreHashMap:ListItemsAsync(), แล้วลบออกด้วย MemoryStoreHashMap:RemoveAsync()

ลบข้อมูลทั้งหมดในแผนที่แฮช

local MemoryStoreService = game:GetService("MemoryStoreService")
local hashMap = MemoryStoreService:GetHashMap("HashMap1")
-- รับรายการรายการไอเท็ม, 32 รายการในแต่ละครั้ง
local success, pages = pcall(function()
return hashMap:ListItemsAsync(32)
end)
if success then
while true do
-- รับหน้าปัจจุบัน
local entries = pages:GetCurrentPage()
local removeSuccess = true
local removeError = nil
-- ทำซ้ำผ่านคู่ค่าทั้งหมดในหน้า
for _, entry in ipairs(entries) do
print(entry.key .. " : " .. tostring(entry.value))
removeSuccess, removeError = pcall(function()
hashMap:RemoveAsync(entry.key)
end)
if not removeSuccess then
warn(removeError)
end
end
-- ตรวจสอบว่าหน้าล่าสุดถึงแล้ว
if pages.IsFinished then
print("Finished deleting all data.")
break
else
print("---------")
-- ก้าวไปยังหน้าต่อไป
pages:AdvanceToNextPageAsync()
end
end
end