หน่วยเก็บข้อมูล

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

MemoryStoreService เป็นบริการข้อมูลที่มีประสิทธิภาพและเชื่อถือได้สูงสำหรับการเก็บข้อมูลในหน่วยความจำที่เร็วขึ้น หน่วยความ

โครงสร้างข้อมูล

แทนที่จะเข้าถึงข้อมูลดิบโดยตรง หน่วยจำเก็ตของหน่วยความจำมีสามโครงสร้างข้อมูลพื้นฐานที่แบ่งปันไปทั่วเซิร์ฟเวอร์เพื่อการประมวลผลที่รวดเร็ว: แผนที่ที่เรียงลำดับ , ค

  • จับคู่ขึ้นอยู่กับทักษะ - บันทึกข้อมูลผู้ใช้เช่นระดับทักษะในคิวรวมของเซิร์ฟเวอร์และใช้เซิร์ฟเวอร์ล็อบบี้เพื่อดำเนินการจับคู่โดยรวมในระยะเวลา
  • การแลกเปลี่ยนและประมูลเซิร์ฟเวอร์ข้ามเซิร์ฟเวอร์ - เปิดใช้งานการแลกเปลี่ยนระหว่างเซิร์ฟเวอร์ที่หลากหลาย โดยผู้ใช้สามารถเดิมพันไอเทมที่มีราคาเปลี่ยนแปลงในเวลาจริงด้วยการจัดเ
  • ลีดเดอร์บอร์ดระดับโลก - เก็บและปรับปรุงอันดับผู้ใช้ในลีดเดอร์บอร์ดระดับแมพรวมภายใน แผนที่ที่เรียงลำดับ * ห้องเก็บของร่วมกัน - บันทึกรายการสินค้าและสถิติในห้องเก็บของร่วมกันที่ผู้ใช้สามารถใช้รายการสินค้าและสถิติในห้องเก็บของร่วมกันได้พร้อมกัน
  • เครื่องมือสําหรับข้อมูลที่คงที่ - จัดเก็บและคัดลอกข้อมูลคงที่ของคุณในห้องเก็บข้อมูลเพื่อเก็บในห้องเก็บข้อมูลที่สามารถใช้เป็นเครื่องมือและปรับปรุงประสิทธิภาพของประสบการณ์ขอ

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

ข้อจํากัดและข้อกําหนด

การดำเนินการหน่วยจำเขนข้อมูลมีส่วนในการใช้ข้อมูลสำหรับขนาดหน่วยจำเขนข้อมูล คำขอ API และขนาดของโครงสร้างข้อมูล

หน่วยความจำมีนโยบายการเร่งออกตามเวลาที่หมดอายุ, โดยทั่วไปเรียกว่าเวลาที่อาศัยอยู่ (TTL) อาหรับรายการที่ถูกเร่งออกจะถูกลบออกหลังจากที่พวกเขาหมดอายุ, และ quota หน่วยความจำจะ

ขนาดหน่วยความจำ

ขีดจำกัดหน่วยความจำ จำกัดจำนวนหน่วยความจำที่ประสบการณ์สามารถใช้ได้ มันไม่ใช่มูลค่าตามที่พบในตาราง 64KB + 1KB * [จำนวนผู้ใช้ในประสบการณ์ตามสูตรต่อไปน

เมื่อผู้ใช้เข้าร่วมประสบการณ์ ข้อจํากัดการหุ่นเมมอร์เพิ่มเติมจะทันทีมีอยู่ เมื่อผู้ใช้ออกจากประสบการณ์ ข้อจํากัดนี้จะไม่ลดลงโดยทันที มีระยะเวลาการติดตามเวลาเจ็ดวันก่อนที่ข้อจ�

หลังจากที่ประสบการณ์ของคุณตรงไปยังขนาดหน่วยความจำ การร้องขอ API ใด ๆ ที่เพิ่มขนาดหน่วยความจำเสมอจะล้มเหลว การร้องขอที่ลดหรือไม่เปลี่ยนขนาดหน่วยความจำยังคงประสบความสำเร็จ

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

ข้อจํากัดการร้องขอ API

สำหรับข้อจํากัดการร้องขอ API มี รายการห้องขอ ที่ใช้สําหรับการโทร API ทั้งหมด ของ MemoryStoreService รายการคําขออยู่ที่ 1000 + 100 * [จํานวนผู้ใช้] ต่อ

การโทร API ส่วนใหญ่ใช้เวลาเพียงหนึ่งหน่วยคำขอเท่านั้น โดยมีข้อยกเว้นสองสามข้อ:

  • MemoryStoreSortedMap:GetRangeAsync()

    ใช้หน่วยตามจำนวนรายการที่กลับมา เช่น หากวิธีนี้กลับมา 10 รายการ การเรียกจะนับเป็นหน่วยคำขอ 10 หน่วย หากกลับมาเป็นตอบกลับที่ว่างเปล่า จะนับเป็นหน่วยคำขอเดียว

  • MemoryStoreQueue:ReadAsync()

    ใช้หน่วยตามจำนวนรายการที่กลับมา เช่นเดียวกับ MemoryStoreSortedMap:GetRangeAsync() แต่ใช้หน่วยเพิ่มเติมทุกสองวินาทีขณะอ่าน กำหนดเวลาอ่านสูงสุดด้วย waitTimeout ตัวแปร

  • MemoryStoreHashMap:UpdateAsync()

    การใช้งานอย่างน้อยสองหน่วย

  • MemoryStoreHashMap:ListItemsAsync()

    การใช้ [จำนวนผลการสแกน] + [ไอเทมที่กลับมา] หน่วย

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

ด้วยคุณสมบัติ ความสามารถในการดู ที่มีอยู่ คุณสามารถดูจำนวนของห้องขอของประสบการณ์ของคุณในเวลาจริงได้

ขนาดของโครงสร้างข้อมูล

สำหรับแผนที่หรือคิวที่เรียบเรียงเดียว ขนาดและจำนวนรายการต่อไปนี้เป็นข้อจํากัด:

  • จำนวนรายการสูงสุด: 1,000,000
  • ขนาดรวมสูงสุด (รวมทั้งกุญแจสำหรับแผนที่ที่เรียงลำดับ): 100 MB

ข้อจํากัดระหว่างผาน

ดู ขีดจำกัด Per-Partition

ดีที่สุด การฝึกอบรม

เพื่อให้แนวโน้มการใช้หน่วยความจำของคุณเป็นปกติและหลีกเลี่ยงการโจมตี ขีดจำกัด ให้ปฏิบัติตามนี้ดีที่สุด:

  • ลบรายการที่ประมวลผลแล้ว ทำความสะอาดรายการที่อ่านโดยใช้วิธี MemoryStoreQueue:RemoveAsync() สำหรับคิวและ MemoryStoreSortedMap:RemoveAsync() สำหรับคิวส์ สามารถปลดปล่อยหน่วยความจำได

  • ตั้งเวลาหมดอายุให้เล็กที่สุดเมื่อเพิ่มข้อมูล แม้ว่าเวลาหมดอายุเริ่มต้นจะเป็นเวลา 45 วันสำหรับทั้ง MemoryStoreQueue:AddAsync() และ Class.MemorySortedMap

    • อย่าเก็บขนาดของข้อมูลมากเกินไปด้วยเวลาหมดอายุที่ยาวนานเกินไปเนื่องจากมันอาจเสี่ยงต่อการเกินขีดจำกัดของคุณและอาจทำให้เกิดปัญหาที่ทำให้ประสบการณ์ของคุณทั้งหมดของคุณพัง
    • ลบรายการที่ไม่จำเป็นหรือตั้งค่าการหมดอายุรายการสั้น ๆ
    • โดยทั่วไปคุณควรใช้การลบแสดงอย่างชัดเจนเพื่อปลดปล่อยหน้าหากและระยะเวลาที่หมดอายุของหน่วยความจำและรายการที่ไม่ได้ใช้งานเป็นเครื่องมือป้องกันไม่ให้ไอเท็มที่ไม่ได้ใช้งานเป็นเวลานาน
  • เก็บรักษาค่าที่จำเป็นเท่านั้นในหน่วยความจำ

    เช่นสำหรับประสบการณ์บ้านประมูล, คุณสามารถใช้ MemoryStoreQueue:UpdateAsync() บนหนึ่งกุญแจเพื่อให้คุณสามารถเก็บราคาสูงสุดได้แทนที่จะเก็บราคาทั้งหมดในโครงสร้างข้อมูลของคุณ

  • ใช้ การลดการเร่งของเชิงเส้น เพื่อช่วยให้อยู่ภายใต้ขีดจำกัดการร้องขอ API

    เช่นเดียวกับกรณีที่คุณได้รับ DataUpdateConflict คุณอาจลองอีกครั้งหลังจากสองวินาที, แล้วสี่, แปด, เป็นต้น แทนที่จะส่งคำขออย่างต่อเนื่องไปยัง MemoryStoreService เพื่อรับคำตอบที่ถูกต้อง

  • แบ่งโครงสร้างข้อมูลขนาดยักษ์ใหญ่เป็นหลายส่วนโดย หัวข้อย่อย

    มักจะเป็นเรื่องง่ายกว่าที่จะจัดการข้อมูลในโครงสร้างขนาดเล็กมากกว่าการเก็บข้อมูลทั้งหมดในโครงสร้างขนาดใหญ่ การใช้ประโยชน์นี้สามารถช่วยให้คุณหลีกเ

  • แรงดันค่าที่เก็บไว้

    ตัวอย่างเช่น คุณควรพิจารณาใช้ LZW อัลกอริทึมเพื่อลดขนาดของค่าที่เก็บไว้

การมองเห็น

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

ตารางต่อไปนี้รายชื่อและอธิบายรหัสสถานะทั้งหมดของโค้ดตอบสนอง API ที่มีอยู่ในแผงควบคุม รับคำขอโดยสถานะ และ รับคำขอโดย API ช

รหัสสถานะคำอธิบาย
ความสำเร็จความสำเร็จ.
ขีดจำกัดความจำข้อมูลเกินขีดจำกัดขนาดหน่วยความจำระดับโครงสร้างข้อมูล (100MB)
ข้อมูลปรับปรุงความขัดแย้งอัปเดต
ปฏิเสธการอนุญาตไม่ได้รับอนุญาตให้เข้าถึงข้อมูลประสบการณ์ คำขอนี้ไม่ใช้หน่วยความต้องการหรือใช้ความจำกัด
ข้อผิดพลาดภายในข้อผิดพลาดภายใน
คำขอไม่ถูกต้องคำขอไม่มีข้อมูลที่ต้องการหรือมีข้อมูลที่ไม่ถูกต้อง
รายการข้อมูลเกินขีดจำกัดเกินระดับรายการระดับโครงสร้างข้อมูล (1M)
ไม่พบรายการไม่พบรายการใน MemoryStoreQueue:ReadAsync() หรือ MemoryStoreSortedMap:UpdateAsync() นอกจากนี้ยังมีการโพลตทุก 2 วินาทีและการรีนอัสสถานะนี้จนกว่าจะพบรายการในคิว
ข้อจํากัดการเรียกขอข้อมูลเกินขีดจำกัดระดับความต้องการของข้อมูล (100,000 หน่วยคำขอต่อนาที)
ขีดจำกัดการแบ่งย่อยเกินขีดจำกัดของคำขอแบ่งผนัง
ค่าใช้จ่ายทั้งหมดเกี่ยวกับขีดจำกัดการร้องขอเกินขีดจำกัดของหน่วยคำขอระดับจักรวาล
ขีดจำกัดการใช้หน่วยความจำทั้งหมดเกินขีดจำกัดการจำหน่ายหน่วยความจำระดับจักรวาล
ขนาดของรายการเกินขีดจำกัดขนาดมูลค่าเกินขีดจำกัด (32KB)

ตารางต่อไปนี้รายชื่อรหัสจากด้านล่างของลูกค้าซึ่งขณะนี้ไม่สามารถใช้งานได้ใน Dashboard การวัดผล

รหัสสถานะคำอธิบาย
ข้อผิดพลาดภายในข้อผิดพลาดภายใน
สถานที่ที่ไม่เผยแพร่คุณต้องเผยแผนนี้เพื่อใช้ MemoryStoreService
การเข้าถึงลูกค้าไม่ถูกต้องต้องเรียกบริการหน่วยความจำจากเซิร์ฟเวอร์
เวลาหมดอายุไม่ถูกต้องเวลา "หมดอายุ" ต้องอยู่ระหว่าง 0 และ 3,888,000
คำขอไม่ถูกต้องไม่สามารถแปลงค่าเป็น JSON ได้
คำขอไม่ถูกต้องไม่สามารถแปลง sortKey เป็นตัวเลขหรือสตริงที่ถูกต้องได้
TransformCallFailedไม่สามารถเรียกใช้งานได้ Failed to invite คุณสมบัติเชิญ
คําขอควบคุมคำขอเก็บหน่วยความจำล่าสุดพบปัญหาหนึ่งหรือมากกว่า
อัปเดตความขัดแย้งเกินจำนวนครั้งที่เรียกร้องได้สูงสุด

การแก้ปัญหา

ตารางต่อไปนี้รายการและอธิบายวิธีการแก้ปัญหาที่แนะนำสำหรับแต่ละรหัสสถานะตอบกลับ:

ผิดพลาดตั้งค่าแก้ปัญหา
DataStructureCommands / PartitionCommands

    เพิ่มความจำท้องถิ่นโดยการบันทึกข้อมูลไปยังแป้นอื่นและตรวจสอบอีกครั้งห

    • แบ่งข้อมูลโครงสร้างข้อมูลของคุณหากคุณได้รับจำนวนเงินสูงจากการตอบกลับ DataStructurePermissionsOverLimit / PartitionCommandsLimit เท่านั้น.
    • ส่ง

ค่าใช้จ่ายทั้งหมดเกี่ยวกับขีดจำกัดการร้องขอ
รายการข้อมูลเกินขีดจำกัด
ขีดจำกัดความจำข้อมูล
ขีดจำกัดการใช้หน่วยความจำทั้งหมด
ข้อมูลปรับปรุงความขัดแย้ง

    เรียกคืนสิ่งที่อยู่ในหน้าเว็บก่อนที่จะเรียกคืนสิ่งที่อยู่ในหน

ข้อผิดพลาดภายใน

    ตรวจสอบหน้าสถานะ Roblox ของคุณ . เขียนรายงานข้อผิดพลาด 0> ที่คุณพบปัญหาด้วย

    2>รหัสจักรวาล

    2> ของประสบการณ์ของคุณ2> .

คำขอไม่ถูกต้อง
  • ให้แน่ใจว่าคุณรวมประมาณตัวแปรที่ถูกต้องและถูกต้องในคำขอของคุณ ตัวอย่างของประมาณตัวแปรที่ไม่ถูกต้องรวมถึง:
    • สตริงที่ว่างเปล่า
    • สตริงที่เกินขีดจำกัดความยาว
ขนาดของรายการเกินขีดจำกัด
  • แบ่งหรือแบ่งค่าของรายการเป็นหลายรายการ
    • เพื่อจัดเก็บกุญแจที่เกี่ยวข้องกัน คีย์prefix ให้กับกุญแจ
  • การเข้ารหัสหรือการแปลงค่าที่เก็บไว้

การทดสอบและการดีบั๊กใน Studio

ข้อมูลใน MemoryStoreService ถูกกั้นออกระหว่าง Studio และการผลิตดังนั้นการเปลี่ยนแปลงข้อมูลใน Studio จึงไม่ส่งผลต่อการทำงานในการผลิต ซึ่งหมายความว่าการโทร API ของคุณจาก Studio จะไม่เข้าถึงข้อ

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

สำหรับข้อมูลเกี่ยวกับวิธีการดีบั๊กหน่วยความจำในเกมที่มีการแสดงผลในเวลาจริงหรือในการทดสอบในสตูดิโอให้ใช้ คอนโซลผู้พัฒนา