รหัสข้อผิดพลาดและขีดจำกัดของ Data store

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

คำขอที่คุณทำไปยัง data stores อาจล้มเหลวเนื่องจากการเชื่อมต่อที่ไม่ดีหรือปัญหาอื่น ๆ เพื่อจัดการกับข้อผิดพลาดและส่งคืนข้อความพร้อมรหัสข้อผิดพลาด ให้ห่อหุ้มฟังก์ชัน data store ใน pcall()

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

อ้างอิงรหัสข้อผิดพลาด

รหัสข้อผิดพลาดชื่อข้อผิดพลาดข้อความข้อผิดพลาดหมายเหตุ
101KeyNameEmptyชื่อคีย์ไม่สามารถว่างเปล่าได้ตรวจสอบว่าคีย์ที่ป้อนเข้าไปในฟังก์ชัน data store เป็นสตริงว่างหรือไม่
102KeyNameLimitชื่อคีย์เกินขีดจำกัด 50 ตัวอักษรตรวจสอบว่าคีย์ที่ป้อนเข้าไปในฟังก์ชัน data store เกินความยาว 50 หรือไม่
103ValueNotAllowedไม่สามารถอนุญาต X ใน DataStore ได้ฟังก์ชันอัปเดตที่ไม่ดีส่งค่าประเภท X กลับมา
104CantStoreValueไม่สามารถจัดเก็บ X ใน DataStore ได้ฟังก์ชันอัปเดตส่งค่าประเภท X ที่ไม่สามารถจัดเก็บได้
105ValueTooLargeค่าที่ถูกจัดเก็บมีขนาดเกิน Xหากคุณกำลังตั้งค่าค่าด้วย SetAsync() หรือ UpdateAsync() ความยาวที่ถูกจัดเก็บของค่าจะต้องไม่เกินขนาด X เพื่อตรวจสอบความยาวที่ถูกจัดเก็บของข้อมูล ให้ใช้ JSONEncode()
106MaxValueInvalidMaxValue ต้องเป็นจำนวนเต็มหากคุณกำลังส่งค่ามากสุดไปยัง GetSortedAsync() สำหรับ OrderedDataStore มันต้องเป็นจำนวนเต็ม
106MinValueInvalidMinValue ต้องเป็นจำนวนเต็มหากคุณกำลังส่งค่าต่ำสุดไปยัง GetSortedAsync() สำหรับ OrderedDataStore มันต้องเป็นจำนวนเต็ม
106PageSizeGreaterPageSize ต้องอยู่ในช่วงที่กำหนดไว้ขนาดหน้าขั้นต่ำสำหรับ OrderedDataStore คือ 1
106PageSizeLesserPageSize ต้องอยู่ในช่วงที่กำหนดไว้ขนาดหน้าสูงสุดสำหรับ OrderedDataStore คือ 100
107MinMaxOrderInvalidMaxValue ต้องมากกว่าหรือเท่ากับ MinValueค่ามากสุดต้องมากกว่าหรือเท่ากับค่าต่ำสุดสำหรับ GetSortedAsync()
301GetAsyncThrottleคำขอ GetAsync ถูกยกเลิก คำขอถูกควบคุมแต่คิวเต็มคำขอ GetAsync() เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่กำหนดได้ในขณะนี้
302SetAsyncThrottleคำขอ SetAsync ถูกยกเลิก คำขอถูกควบคุมแต่คิวเต็มคำขอ SetAsync() เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่กำหนดได้ในขณะนี้
303IncreAsyncThrottleคำขอ IncrementAsync ถูกยกเลิก คำขอถูกควบคุมแต่คิวเต็มคำขอ IncrementAsync() เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่กำหนดได้ในขณะนี้
304UpdateAsyncThrottleคำขอ UpdateAsync ถูกยกเลิก คำขอถูกควบคุมแต่คิวเต็มคำขอ UpdateAsync() เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่กำหนดได้ในขณะนี้
304TransformThrottleคำขอ UpdateAsync ถูกยกเลิก คำขอถูกควบคุมแต่คิวเต็มคำขอ UpdateAsync() เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่กำหนดได้ในขณะนี้
305GetSortedThrottleคำขอ GetSorted ถูกยกเลิก คำขอถูกควบคุมแต่คิวเต็มคำขอ GetSortedAsync() เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่กำหนดได้ในขณะนี้
306RemoveAsyncThrottleคำขอ RemoveAsync ถูกยกเลิก คำขอถูกควบคุมแต่คิวเต็มคำขอ RemoveAsync() เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่กำหนดได้ในขณะนี้
401DataModelNoAccessคำขอล้มเหลว DataModel ไม่สามารถเข้าถึงได้ในขณะที่ประสบการณ์กำลังปิดตัวลงDataModel ยังไม่ได้เริ่มต้นเนื่องจากประสบการณ์กำลังปิดตัวลง
402LuaWebSrvsNoAccessคำขอล้มเหลว LuaWebService ไม่สามารถเข้าถึงได้ในขณะที่ประสบการณ์กำลังปิดตัวลงLuaWebService ยังไม่ได้เริ่มต้นเนื่องจากประสบการณ์กำลังปิดตัวลง
403StudioAccessToApisNotAllowedไม่สามารถเขียนไปยัง DataStore จาก Studio ได้เนื่องจากการเข้าถึง API ไม่ได้เปิดใช้งานการเข้าถึง API ต้องเปิดใช้งานเพื่อใช้ data stores ใน Studio
404InternalErrorOrderedDataStore ไม่มีอยู่OrderedDataStore ที่เกี่ยวข้องกับคำขอนี้ไม่พบ อาจเป็นสัญญาณของการเสียหายของข้อมูล ลองอีกครั้งในภายหลัง
501InternalErrorไม่สามารถแยกวิเคราะห์การตอบสนองได้เนื่องจากข้อมูลอาจเสียหายเซิร์ฟเวอร์ไม่สามารถแยกวิเคราะห์การตอบสนองต่อคำขอของคุณได้ อาจเป็นสัญญาณของการเสียหายของข้อมูล ลองอีกครั้งในภายหลัง
502RequestRejectedAPI Services ปฏิเสธคำขอด้วยข้อผิดพลาด Xข้อผิดพลาด X เกิดขึ้นเมื่อประมวลผลบนเซิร์ฟเวอร์ Roblox ลองอีกครั้งในภายหลัง
503InternalErrorคำขอ data store สำเร็จแต่ไม่พบคีย์คีย์ที่ร้องขอไม่พบใน data store อาจเป็นสัญญาณของการเสียหายของข้อมูล ลองอีกครั้งในภายหลัง
504InternalErrorคำขอ data store สำเร็จแต่การตอบสนองไม่ได้จัดรูปแบบอย่างถูกต้องเซิร์ฟเวอร์ไม่สามารถแยกวิเคราะห์การตอบสนองต่อคำขอของคุณได้ อาจเป็นสัญญาณของการเสียหายของข้อมูล ลองอีกครั้งในภายหลัง
505InternalErrorคำขอ OrderedDataStore สำเร็จแต่การตอบสนองไม่ได้จัดรูปแบบอย่างถูกต้องเซิร์ฟเวอร์ไม่สามารถแยกวิเคราะห์การตอบสนองต่อคำขอ OrderedDataStore ของคุณได้ อาจเป็นสัญญาณของการเสียหายของข้อมูล ลองอีกครั้งในภายหลัง
509OperationNotAllowedการดำเนินการ data store ถูกบล็อกในขณะที่ทำงานบน Personal RCC เพื่อป้องกันการเสียหายของข้อมูลที่อาจเกิดขึ้นการเขียน data store ถูกบล็อกในช่องทาง RCC ส่วนตัว
511AttributeSizeTooLargeขนาดของเมตาดาต้าลักษณะเกินขีดจำกัด Xขนาดของเมตาดาต้าที่ถูกจัดเก็บเกินขีดจำกัด X ค่าที่ X เป็นแบบไดนามิก หากขนาดเปลี่ยนแปลง ค่าก็จะเปลี่ยนแปลงด้วย
512UserIdLimitExceededขนาดของ UserID เกินขีดจำกัด Xความยาวของอาร์เรย์ user IDs ที่ผู้ใช้ให้มามีความยาวเกินขีดจำกัด X
513AttributeFormatErrorรูปแบบของลักษณะ userId ไม่ถูกต้องหมายเลข user ID ที่ให้มาไม่ใช่ตัวเลข
513AttributeFormatErrorรูปแบบของเมตาดาต้าไม่ถูกต้องเมตาดาต้าไม่ใช่ตาราง
GetVersionAsyncThrottleคำขอ GetVersionAsync ถูกยกเลิก คำขอถูกควบคุมคำขอ GetVersionAsync() เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่กำหนดได้ในขณะนี้
GetVersionAtTimeAsyncThrottleคำขอ GetVersionAtTimeAsync ถูกยกเลิก คำขอถูกควบคุมคำขอ GetVersionAtTimeAsync() เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่กำหนดได้ในขณะนี้
ListDataStoresAsyncThrottleคำขอ ListDataStoresAsync ถูกยกเลิก คำขอถูกควบคุมคำขอ ListDataStoresAsync() เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่กำหนดได้ในขณะนี้
ListKeysAsyncThrottleคำขอ ListKeysAsync ถูกยกเลิก คำขอถูกควบคุมคำขอ ListKeysAsync() เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่กำหนดได้ในขณะนี้
ListVersionsAsyncThrottleคำขอ ListVersionsAsync ถูกยกเลิก คำขอถูกควบคุมคำขอ ListVersionsAsync() เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่กำหนดได้ในขณะนี้
RemoveVersionAsyncThrottleคำขอ RemoveVersionAsync ถูกยกเลิก คำขอถูกควบคุมคำขอ RemoveVersionAsync() เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่กำหนดได้ในขณะนี้
InvalidTimestampTimestamp ต้องเป็นบวกและไม่เกินสิบในอนาคตTimestamp ที่ให้มากับ GetVersionAtTimeAsync() ไม่ถูกต้อง
StandardReadExperienceThrottledคำขอ StandardRead ถูกควบคุมโดยขีดจำกัดประสบการณ์คำขอไปยัง GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), หรือการอ่านของ UpdateAsync() บน data store มาตรฐานเกินขีดจำกัดอัตราการอ่านระดับประสบการณ์ StandardRead
StandardWriteExperienceThrottledคำขอ StandardWrite ถูกควบคุมโดยขีดจำกัดประสบการณ์คำขอไปยัง SetAsync(), IncrementAsync(), หรือการเขียนของ UpdateAsync() บน data store มาตรฐานเกินขีดจำกัดอัตราการเขียนระดับประสบการณ์ StandardWrite
StandardListExperienceThrottledคำขอ StandardList ถูกควบคุมโดยขีดจำกัดประสบการณ์คำขอไปยัง ListKeysAsync(), ListVersionsAsync(), หรือ ListDataStoresAsync() บน data stores มาตรฐานเกินขีดจำกัดอัตราการเขียนระดับประสบการณ์ StandardList
StandardRemoveExperienceThrottledคำขอ StandardRemove ถูกควบคุมโดยขีดจำกัดประสบการณ์คำขอไปยัง RemoveAsync() บน data store มาตรฐานเกินขีดจำกัดอัตราการเขียนระดับประสบการณ์ StandardRemove
OrderedReadExperienceThrottledคำขอ OrderedRead ถูกควบคุมโดยขีดจำกัดประสบการณ์คำขอไปยัง GetAsync(), BatchGetAsync(), หรือการอ่านของ UpdateAsync() บน data store ที่จัดเรียงเกินขีดจำกัดอัตราการอ่านระดับประสบการณ์ OrderedRead
OrderedWriteExperienceThrottledคำขอ OrderedWrite ถูกควบคุมโดยขีดจำกัดประสบการณ์คำขอไปยัง SetAsync(), IncrementAsync(), หรือการเขียนของ UpdateAsync() บน data store ที่จัดเรียงเกินขีดจำกัดอัตราการเขียนระดับประสบการณ์ OrderedWrite
OrderedListExperienceThrottledคำขอ OrderedList ถูกควบคุมโดยขีดจำกัดประสบการณ์คำขอไปยัง GetSortedAsync() บน data store ที่จัดเรียงเกินขีดจำกัดอัตราการเขียนระดับประสบการณ์ OrderedList
OrderedRemoveExperienceThrottledคำขอ OrderedRemove ถูกควบคุมโดยขีดจำกัดประสบการณ์คำขอไปยัง RemoveAsync() บน data store ที่จัดเรียงเกินขีดจำกัดอัตราการเขียนระดับประสบการณ์ OrderedRemove
StandardReadGameServerThrottledคำขอ StandardRead ถูกควบคุมโดยขีดจำกัดเซิร์ฟเวอร์เกมหรือคิวคำขอเต็มคำขอไปยัง GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), หรือการอ่านของ UpdateAsync() บน data store มาตรฐานเกินขีดจำกัดอัตราการอ่านระดับเซิร์ฟเวอร์เกม StandardRead
StandardWriteGameServerThrottledคำขอ StandardWrite ถูกควบคุมโดยขีดจำกัดเซิร์ฟเวอร์เกมหรือคิวคำขอเต็มคำขอไปยัง SetAsync(), IncrementAsync(), หรือการเขียนของ UpdateAsync() บน data store มาตรฐานเกินขีดจำกัดอัตราการเขียนระดับเซิร์ฟเวอร์เกม StandardWrite
StandardListGameServerThrottledคำขอ StandardList ถูกควบคุมโดยขีดจำกัดเซิร์ฟเวอร์เกมหรือคิวคำขอเต็มคำขอไปยัง ListKeysAsync(), ListVersionsAsync(), หรือ ListDataStoresAsync() บน data stores มาตรฐานเกินขีดจำกัดอัตราการเขียนระดับเซิร์ฟเวอร์เกม StandardList
StandardRemoveGameServerThrottledคำขอ StandardRemove ถูกควบคุมโดยขีดจำกัดเซิร์ฟเวอร์เกมหรือคิวคำขอเต็มคำขอไปยัง RemoveAsync() บน data store มาตรฐานเกินขีดจำกัดอัตราการเขียนระดับเซิร์ฟเวอร์เกม StandardRemove
OrderedReadGameServerThrottledคำขอ OrderedRead ถูกควบคุมโดยขีดจำกัดเซิร์ฟเวอร์เกมหรือคิวคำขอเต็มคำขอไปยัง GetAsync(), BatchGetAsync(), หรือการอ่านของ UpdateAsync() บน data store ที่จัดเรียงเกินขีดจำกัดอัตราการอ่านระดับเซิร์ฟเวอร์เกม OrderedRead
OrderedWriteGameServerThrottledคำขอ OrderedWrite ถูกควบคุมโดยขีดจำกัดเซิร์ฟเวอร์เกมหรือคิวคำขอเต็มคำขอไปยัง SetAsync(), IncrementAsync(), หรือการเขียนของ UpdateAsync() บน data store ที่จัดเรียงเกินขีดจำกัดอัตราการเขียนระดับเซิร์ฟเวอร์เกม OrderedWrite
OrderedListGameServerThrottledคำขอ OrderedList ถูกควบคุมโดยขีดจำกัดเซิร์ฟเวอร์เกมหรือคิวคำขอเต็มคำขอไปยัง GetSortedAsync() บน data store ที่จัดเรียงเกินขีดจำกัดอัตราการเขียนระดับเซิร์ฟเวอร์เกม OrderedList
OrderedRemoveGameServerThrottledคำขอ OrderedRemove ถูกควบคุมโดยขีดจำกัดเซิร์ฟเวอร์เกมหรือคิวคำขอเต็มคำขอไปยัง RemoveAsync() บน data store ที่จัดเรียงเกินขีดจำกัดอัตราการเขียนระดับเซิร์ฟเวอร์เกม OrderedRemove

รหัสข้อผิดพลาดของเซิร์ฟเวอร์

ชื่อข้อผิดพลาดข้อความข้อผิดพลาดหมายเหตุ
DatastoreDeletedData store ถูกลบแล้วไม่สามารถดำเนินการใน data store ได้เนื่องจาก data store ถูกลบไปก่อนหน้านี้
DatastoreThrottledอัตราคำขอเกินขีดจำกัดสูงสุดที่อนุญาตสำหรับ datastoreส่งคำขอมากเกินไปไปยัง data store เดียว
InternalServerErrorเกิดข้อผิดพลาดภายในเซิร์ฟเวอร์ข้อผิดพลาดบางประการบนเซิร์ฟเวอร์ Roblox ลองอีกครั้ง โดยเฉพาะอย่างยิ่งด้วยการถอยกลับแบบเอ็กซ์โพเนนเชียล
InvalidExclusiveStartKeyคีย์เริ่มต้นพิเศษที่ให้มาไม่ถูกต้องคีย์เริ่มต้นพิเศษ (ตัวชี้) ที่ให้มากับการดำเนินการรายการเช่น ListKeysAsync() ไม่ถูกต้อง
InvalidPlaceสถานที่ที่ให้มานั้นไม่ถูกต้องไม่มี ID จักรวาลที่ตรงกันสำหรับสถานที่ ลองอีกครั้งในภายหลัง
InvalidTargetเป้าหมายที่ให้มานั้นไม่ถูกต้องชื่อคีย์ data store ที่จัดเรียงเกินขีดจำกัด 50 ตัวอักษร
InvalidUniverseจักรวาลที่ให้มานั้นไม่ถูกต้องไม่มี ID สถานที่ที่ตรงกันสำหรับจักรวาล ลองอีกครั้งในภายหลัง
InvalidUserIdsรูปแบบของ user IDs ที่ให้มานั้นไม่ถูกต้องไม่สามารถแยกวิเคราะห์ user IDs ได้
KeyThrottledอัตราคำขอเกินขีดจำกัดสูงสุดที่อนุญาตสำหรับคีย์อัตราคำขอเกินขีดจำกัดอัตราคำขอสูงสุดที่อนุญาตสำหรับคีย์เดียว
KeyNotFoundคีย์ที่ร้องขอไม่มีอยู่คีย์ไม่มีอยู่
N/Aไม่มีหน้าที่จะก้าวไปข้างหน้าข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณเรียก Pages:AdvanceToNextPageAsync() บนหน้าสุดท้าย
StandardReadExperienceThrottledอัตราคำขออ่านมาตรฐานเกินขีดจำกัดสูงสุดที่อนุญาตสำหรับประสบการณ์คำขอไปยัง GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), หรือการอ่านของ UpdateAsync() บน data store มาตรฐานเกินขีดจำกัดอัตราการอ่านระดับประสบการณ์ StandardRead
StandardWriteExperienceThrottledอัตราคำขอเขียนมาตรฐานเกินขีดจำกัดสูงสุดที่อนุญาตสำหรับประสบการณ์คำขอไปยัง SetAsync(), IncrementAsync(), หรือการเขียนของ UpdateAsync() บน data store มาตรฐานเกินขีดจำกัดอัตราการเขียนระดับประสบการณ์ StandardWrite
StandardListExperienceThrottledอัตราคำขอรายการมาตรฐานเกินขีดจำกัดสูงสุดที่อนุญาตสำหรับประสบการณ์คำขอไปยัง ListKeysAsync(), ListVersionsAsync(), หรือ ListDataStoresAsync() บน data stores มาตรฐานเกินขีดจำกัดอัตราการเขียนระดับประสบการณ์ StandardList
StandardRemoveExperienceThrottledอัตราคำขอการลบมาตรฐานเกินขีดจำกัดสูงสุดที่อนุญาตสำหรับประสบการณ์คำขอไปยัง RemoveAsync() บน data store มาตรฐานเกินขีดจำกัดอัตราการเขียนระดับประสบการณ์ StandardRemove
OrderedReadExperienceThrottledอัตราคำขออ่านที่จัดเรียงเกินขีดจำกัดสูงสุดที่อนุญาตสำหรับประสบการณ์คำขอไปยัง GetAsync(), BatchGetAsync(), หรือการอ่านของ UpdateAsync() บน data store ที่จัดเรียงเกินขีดจำกัดอัตราการอ่านระดับประสบการณ์ OrderedRead
OrderedWriteExperienceThrottledอัตราคำขอเขียนที่จัดเรียงเกินขีดจำกัดสูงสุดที่อนุญาตสำหรับประสบการณ์คำขอไปยัง SetAsync(), IncrementAsync(), หรือการเขียนของ UpdateAsync() บน data store ที่จัดเรียงเกินขีดจำกัดอัตราการเขียนระดับประสบการณ์ OrderedWrite
OrderedListExperienceThrottledอัตราคำขอรายการที่จัดเรียงเกินขีดจำกัดสูงสุดที่อนุญาตสำหรับประสบการณ์คำขอไปยัง GetSortedAsync() บน data store ที่จัดเรียงเกินขีดจำกัดอัตราการเขียนระดับประสบการณ์ OrderedList
OrderedRemoveExperienceThrottledอัตราคำขอการลบที่จัดเรียงเกินขีดจำกัดสูงสุดที่อนุญาตสำหรับประสบการณ์คำขอไปยัง RemoveAsync() บน data store ที่จัดเรียงเกินขีดจำกัดอัตราการเขียนระดับประสบการณ์ OrderedRemove

ขีดจำกัด

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

  • ตั้งค่า
  • ตั้งค่าที่จัดเรียง
  • รับ
  • รับที่จัดเรียง

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

แต่ละคิวมีขีดจำกัด 30 คำขอ เมื่อถึงขีดจำกัดของคิว คำขอจะล้มเหลวด้วยรหัสข้อผิดพลาดในช่วง 301-306 ซึ่งบ่งชี้ว่าคำขอถูกยกเลิกทั้งหมด

ขีดจำกัดการเข้าถึง

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

ขีดจำกัดประสบการณ์

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

  • UpdateAsync() ใช้จากทั้งงบประมาณคำขออ่านและเขียน การเรียกเพียงครั้งเดียวจะลดทั้งสองขีดจำกัด
  • เซิร์ฟเวอร์เกมและ Open Cloud แชร์ งบประมาณ; การจราจร Open Cloud อาจถูกควบคุมโดยการใช้งานในประสบการณ์ (และในทางกลับกัน) ดู ควบคุมขีดจำกัดอัตรา สำหรับแนวทางเพิ่มเติม
data stores มาตรฐาน
ประเภทคำขอAPI เซิร์ฟเวอร์เกมAPI Open Cloudขีดจำกัดที่แชร์ (คำขอต่อหนึ่งนาที)
อ่านGetAsync()
GetVersionAsync()
GetVersionAtTimeAsync()
UpdateAsync()
รับข้อมูลจาก Data Store300 + concurrentUsers × 40
เขียนSetAsync()
IncrementAsync()
UpdateAsync()
สร้าง, อัปเดต, เพิ่มข้อมูลใน Data Store300 + concurrentUsers × 20
รายการListDataStoresAsync()
ListKeysAsync()
ListVersionsAsync()
รายการ Data Stores, รายการข้อมูลใน Data Store, รายการการแก้ไขข้อมูลใน Data Store300 + concurrentUsers × 2
ลบRemoveAsync()ลบข้อมูลใน Data Store, ลบ Data Store, ยกเลิกการลบ Data Store300 + concurrentUsers × 40
data stores ที่จัดเรียง
ประเภทคำขอAPI เซิร์ฟเวอร์เกมAPI Open Cloudขีดจำกัดที่แชร์ (คำขอต่อหนึ่งนาที)
อ่านGetAsync()
BatchGetAsync()
UpdateAsync()
รับข้อมูลจาก Ordered Data Store300 + concurrentUsers × 40
เขียนSetAsync()
IncrementAsync()
UpdateAsync()
สร้าง, อัปเดต, เพิ่มข้อมูลใน Ordered Data Store300 + concurrentUsers × 20
รายการGetSortedAsync()รายการข้อมูลใน Ordered Data Store300 + concurrentUsers × 2
ลบRemoveAsync()ลบข้อมูลใน Ordered Data Store300 + concurrentUsers × 40
ควบคุมขีดจำกัดอัตรา

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

เซิร์ฟเวอร์เกม

เซิร์ฟเวอร์แต่ละตัวมีขีดจำกัดในตัวตามที่อธิบายไว้ข้างต้น ใช้การรวมกันของ SetRateLimitForRequestType() และ GetRequestBudgetForRequestType() เพื่อรักษาการควบคุมที่ละเอียดเกี่ยวกับการมีส่วนร่วมของเซิร์ฟเวอร์แต่ละตัวต่องบประมาณรวม

Open Cloud

คำขอ Open Cloud ต้องการโซลูชันการควบคุมอัตราภายนอก เราขอแนะนำหนึ่งในแนวทางต่อไปนี้:

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

ตัวอย่างโค้ด Node.js ต่อไปนี้รวมถึงการใช้งานอ้างอิง

const apiKey = process.env.API_KEY;
if (!apiKey) {
throw new Error('ตัวแปรสภาพแวดล้อม API_KEY ไม่ได้ตั้งค่า');
}
const apiHeaderKey = 'x-api-key';
const universeId = '';
const dataStoreId = 'Inventory';
const baseUrl = 'https://apis.roblox.com/cloud/v2/';
// --- การกำหนดค่าการจำกัดอัตราต่อการดำเนินการ (คำขอต่อหนึ่งนาที) ---
const LIST_RATE_PER_MIN = 60;
const GET_RATE_PER_MIN = 120;
const UPDATE_RATE_PER_MIN = 60;
// ขีดจำกัดสูงสุดต่อการดำเนินการ: 60 / (คำขอต่อหนึ่งนาที) วินาที
const LIST_INTERVAL_MS = (60 / LIST_RATE_PER_MIN) * 1000;
const GET_INTERVAL_MS = (60 / GET_RATE_PER_MIN) * 1000;
const UPDATE_INTERVAL_MS = (60 / UPDATE_RATE_PER_MIN) * 1000;
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
// ดำเนินการคำขอ จากนั้นรอช่วงเวลาของการดำเนินการนี้ก่อนที่จะส่งคืน
async function throttledFetch(url, options, intervalMs) {
const response = await fetch(url, options);
await sleep(intervalMs);
return response;
}
async function listEntries(universe, dataStore) {
const listPath = `universes/${universe}/data-stores/${dataStore}/entries`;
const url = baseUrl + listPath;
const response = await throttledFetch(url, {
headers: { [apiHeaderKey]: apiKey }
}, LIST_INTERVAL_MS);
return response.json();
}
async function getEntry(path) {
const url = baseUrl + path;
const response = await throttledFetch(url, {
headers: { [apiHeaderKey]: apiKey }
}, GET_INTERVAL_MS);
return response.json();
}
async function updateEntry(path, payload) {
const url = baseUrl + path;
const response = await throttledFetch(url, {
method: 'PATCH',
headers: {
[apiHeaderKey]: apiKey,
'Content-Type': 'application/json'
},
body: JSON.stringify(payload) // เนื้อหาต้องเป็นสตริง
}, UPDATE_INTERVAL_MS);
return response;
}
(async () => {
try {
const entries = await listEntries(universeId, dataStoreId);
for (const entry of entries.dataStoreEntries) {
const path = entry.path;
console.log(`\nกำลังประมวลผลรายการ: ${path}`);
const currentData = await getEntry(path);
currentData.value.currency += 10;
const payload = { value: currentData.value };
const updateResponse = await updateEntry(path, payload);
console.log(`สถานะ: ${updateResponse.status}`);
console.log(`การตอบสนอง: ${await updateResponse.text()}`);
}
} catch (error) {
console.error('เกิดข้อผิดพลาดระหว่างการดำเนินการ:', error);
}
})();

ขีดจำกัดเซิร์ฟเวอร์

เซิร์ฟเวอร์แต่ละตัวมีขีดจำกัดอัตราที่กำหนดค่าได้สำหรับแต่ละประเภทคำขอ ขึ้นอยู่กับจำนวนผู้เล่นในเซิร์ฟเวอร์นั้น เซิร์ฟเวอร์จะได้รับงบประมาณคำขอเพิ่มเติมในช่วงเริ่มต้นเมื่อถูกสร้างขึ้นครั้งแรก ใช้ GetRequestBudgetForRequestType() เพื่อตรวจสอบจำนวนคำขอ data store ที่เซิร์ฟเวอร์ปัจจุบันสามารถทำได้ในเวลาใดเวลาหนึ่ง

ขีดจำกัดเหล่านี้ สามารถกำหนดค่าได้โดยผู้สร้าง โดยใช้ API SetRateLimitForRequestType() โดยใช้ API นี้ ผู้สร้างสามารถกำหนดขีดจำกัดอัตรา data stores ของตนเองสำหรับแต่ละประเภทคำขอ

ขีดจำกัดอัตรา เริ่มต้น ต่อไปนี้จะใช้หากไม่มีการเรียก API:

data stores มาตรฐาน
ประเภทคำขอDataStoreRequestType EnumAPI เซิร์ฟเวอร์เกมคำขอต่อหนึ่งนาที
อ่านStandardReadGetAsync()
GetVersionAsync()
GetVersionAtTimeAsync()
UpdateAsync()
60 + numPlayers × 40
เขียนStandardWriteSetAsync()
IncrementAsync()
UpdateAsync()
60 + numPlayers × 40
รายการStandardListListDataStoresAsync()
ListKeysAsync()
ListVersionsAsync()
5 + numPlayers × 2
ลบStandardRemoveRemoveAsync()60 + numPlayers × 40
RemoveVersion (เลิกใช้)RemoveVersionAsyncRemoveVersionAsync()5 + numPlayers × 2
data stores ที่จัดเรียง
ประเภทคำขอDataStoreRequestType EnumAPI เซิร์ฟเวอร์เกมคำขอต่อหนึ่งนาที
อ่านOrderedReadGetAsync()
BatchGetAsync()
UpdateAsync()
60 + numPlayers × 40
เขียนOrderedWriteSetAsync()
IncrementAsync()
UpdateAsync()
30 + numPlayers × 5
รายการOrderedListGetSortedAsync()5 + numPlayers × 2
ลบOrderedRemoveRemoveAsync()30 + numPlayers × 5

ขีดจำกัดข้อมูล

Data stores จำกัดปริมาณข้อมูลที่สามารถใช้ต่อรายการ

ชื่อ data store, ชื่อคีย์, และ ขอบเขต จะต้องอยู่ภายใต้ความยาวตัวอักษรที่กำหนด ใช้ string.len() เพื่อตรวจสอบความยาวของพวกเขา

ข้อมูล (ค่าคีย์) จะถูกจัดเก็บเป็นสตริง ไม่ว่าจะเป็นประเภทเริ่มต้นใดก็ตาม คุณสามารถตรวจสอบขนาดของข้อมูลได้ด้วยฟังก์ชัน JSONEncode() ซึ่งจะแปลงข้อมูล Luau เป็นตาราง JSON ที่ถูกจัดเก็บ

ส่วนประกอบจำนวนตัวอักษรสูงสุด
ชื่อ data store50
ชื่อคีย์50
ขอบเขต50
ข้อมูล (ค่าคีย์)4,194,304 ต่อคีย์

ขีดจำกัดเมตาดาต้า

ขีดจำกัดจำนวนตัวอักษรในเมตาดาต้าที่ผู้ใช้กำหนด

ส่วนประกอบจำนวนตัวอักษรสูงสุด
ชื่อคีย์50
ค่า250
คู่คีย์-ค่า300

ข้อจำกัดด้านการส่งข้อมูล

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

Roblox จะตรวจสอบการใช้งานของโควต้าที่เกี่ยวข้องกับคีย์ในช่วง 60 วินาทีที่ผ่านมา หากการใช้งานรวมถึงคำขณะนี้อยู่ภายในข้อจำกัดการส่งข้อมูล คำขอจะได้รับการอนุมัติ หากการใช้งานเกินข้อจำกัด คำขอจะถูกปฏิเสธ

ประเภทคำขอAPI เซิร์ฟเวอร์เกมAPI Open Cloudข้อจำกัด
อ่านGetAsync()
GetVersionAsync()
GetVersionAtTimeAsync()
ListVersionsAsync()
UpdateAsync()
ดึงข้อมูลจาก Data Store25 MB ต่อหนึ่งนาที
เขียนSetAsync()
IncrementAsync()
UpdateAsync()
RemoveAsync()
สร้าง, อัปเดต, เพิ่ม, ลบข้อมูลจาก Data Store4 MB ต่อหนึ่งนาที

นอกจากข้อจำกัดด้านการส่งข้อมูลข้างต้น Roblox ยังจัดระเบียบข้อมูลเป็นพาร์ติชันตามสคีมาภายใน ดังนั้นเมื่อเซิร์ฟเวอร์แบ็กเอนด์ได้รับคำขอจำนวนมากไปยัง Data Store เดียวกัน อาจส่งผลให้เกิดการจำกัดเพิ่มเติม ไม่ว่าจะเกิดจากสาเหตุใด การจำกัดจะปรากฏในรูปแบบของข้อผิดพลาด DatastoreThrottled หรือ KeyThrottled ขึ้นอยู่กับว่าข้อจำกัดการส่งข้อมูลถูกเกินสำหรับ Data Store เดียวหรือคีย์ ข้อความข้อผิดพลาดเหล่านี้ใช้ได้กับทั้ง Data Store แบบเรียงลำดับและแบบมาตรฐาน

ข้อจำกัดด้านการจัดเก็บ

เพื่อให้การจัดเก็บมีเสถียรภาพและสามารถขยายได้ Data Store จะใช้ข้อจำกัดระดับเกมในการใช้งานการจัดเก็บของคุณ

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

ข้อจำกัดการจัดเก็บจะถูกคำนวณโดยใช้สูตรต่อไปนี้ Total latest version storage limit = 500 MB + 1 MB × lifetime user count

การใช้งานการจัดเก็บจะถูกวัดโดยใช้ ขนาดที่บีบอัด ของเวอร์ชันล่าสุดของแต่ละคีย์ Data Store จะบีบอัดข้อมูลของคุณโดยอัตโนมัติก่อนการจัดเก็บ ดังนั้นควรหลีกเลี่ยงการบีบอัดล่วงหน้าเอง การบีบอัดล่วงหน้าจะเพิ่มภาระ CPU ที่ไม่จำเป็นและอาจลดประสิทธิภาพของการบีบอัดที่มีอยู่ใน Data Store โดยการจัดเก็บข้อมูลที่ไม่บีบอัด คุณจะได้รับประโยชน์จากการปรับปรุงอัลกอริธึมการบีบอัดของ Roblox และการปรับแต่งตามสคีมาในอนาคตโดยอัตโนมัติ

เฉพาะเวอร์ชันล่าสุดของแต่ละคีย์เท่านั้นที่นับรวมในการใช้งานการจัดเก็บของคุณ คีย์ที่ถูกลบและเวอร์ชันที่ถูกแทนที่ แม้ว่าจะยังสามารถเข้าถึงได้ผ่าน API เวอร์ชันในช่วงเวลาการเก็บรักษาของพวกเขา แต่จะไม่นับรวมในการใช้งานการจัดเก็บของคุณ อย่างไรก็ตาม Data Store ที่ถูกลบผ่านวิธี Open Cloud DeleteDataStore ยังคงนับรวมในการใช้งานการจัดเก็บในช่วงระยะเวลา 30 วันที่กำลังดำเนินการลบ จนกว่าพวกเขาจะถูกลบอย่างถาวร

©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ