รหัสข้อผิดพลาดและขีดจำกัดของ 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 ที่ไม่สามารถ serialize ได้
105ValueTooLargeค่าที่ serialize เกินขีดจำกัด Xหากคุณกำลังตั้งค่าค่าด้วย SetAsync() หรือ UpdateAsync() ความยาวที่ serialize ของค่าไม่สามารถเกินขนาด X ได้ หากต้องการตรวจสอบความยาวที่ serialize ของข้อมูล ให้ใช้ JSONEncode()
106MaxValueInvalidMaxValue ต้องเป็นจำนวนเต็มหากคุณกำลังส่งค่าขั้นสูงสุดไปยัง GetSortedAsync() สำหรับ OrderedDataStore มันต้องเป็นจำนวนเต็ม
106MinValueInvalidMinValue ต้องเป็นจำนวนเต็มหากคุณกำลังส่งค่าขั้นต่ำไปยัง GetSortedAsync() สำหรับ OrderedDataStore มันต้องเป็นจำนวนเต็ม
106PageSizeGreaterPageSize ต้องอยู่ในช่วงที่กำหนดไว้ล่วงหน้าขนาดหน้าขั้นต่ำสำหรับ OrderedDataStore คือ 1
106PageSizeLesserPageSize ต้องอยู่ในช่วงที่กำหนดไว้ล่วงหน้าขนาดหน้าขั้นสูงสุดสำหรับ OrderedDataStore คือ 100
107MinMaxOrderInvalidMaxValue ต้องมากกว่าหรือเท่ากับ MinValueค่าขั้นสูงสุดต้องมากกว่าหรือเท่ากับค่าขั้นต่ำสำหรับ GetSortedAsync()
301GetAsyncThrottleGetAsync ถูกละติน คำขอถูกจัดการ จำกัด แต่คิวเต็มGetAsync() คำขอได้เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่ปัจจุบันได้
302SetAsyncThrottleSetAsync ถูกละติน คำขอถูกจัดการ จำกัด แต่คิวเต็มSetAsync() คำขอได้เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่ปัจจุบันได้
303IncreAsyncThrottleIncrementAsync ถูกละติน คำขอถูกจัดการ จำกัด แต่คิวเต็มIncrementAsync() คำขอได้เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่ปัจจุบันได้
304UpdateAsyncThrottleUpdateAsync ถูกละติน คำขอถูกจัดการ จำกัด แต่คิวเต็มUpdateAsync() คำขอได้เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่ปัจจุบันได้
304TransformThrottleUpdateAsync ถูกละติน คำขอถูกจัดการ จำกัด แต่คิวเต็มUpdateAsync() คำขอได้เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่ปัจจุบันได้
305GetSortedThrottleGetSorted ถูกละติน คำขอถูกจัดการ จำกัด แต่คิวเต็มGetSortedAsync() คำขอได้เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่ปัจจุบันได้
306RemoveAsyncThrottleRemoveAsync ถูกละติน คำขอถูกจัดการ จำกัด แต่คิวเต็ม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ขนาดคุณลักษณะ metadata เกินขีดจำกัด Xขนาด metadata ที่ serialize เกินขีดจำกัดของ X ค่าดังกล่าว X มีการเปลี่ยนแปลง หากขนาดเปลี่ยนแปลง ค่าก็เปลี่ยนแปลง
512UserIdLimitExceededขนาด UserID เกินขีดจำกัด Xความยาวของอาร์เรย์ user IDs ที่ผู้ใช้ให้มาเกินขีดจำกัด X
513AttributeFormatErrorรูปแบบคุณลักษณะ userId ไม่ถูกต้องหมายเลข user ID ที่ให้มาไม่ใช่หมายเลข
513AttributeFormatErrorรูปแบบ metadata ของคุณลักษณะไม่ถูกต้องmetadata ไม่ใช่ตาราง
GetVersionAsyncThrottleGetVersionAsync ถูกละติน คำขอถูกจัดการ จำกัดGetVersionAsync() คำขอได้เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่ปัจจุบันได้
GetVersionAtTimeAsyncThrottleGetVersionAtTimeAsync ถูกละติน คำขอถูกจัดการ จำกัดGetVersionAtTimeAsync() คำขอได้เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่ปัจจุบันได้
ListDataStoresAsyncThrottleListDataStoresAsync ถูกละติน คำขอถูกจัดการ จำกัดListDataStoresAsync() คำขอได้เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่ปัจจุบันได้
ListKeysAsyncThrottleListKeysAsync ถูกละติน คำขอถูกจัดการ จำกัดListKeysAsync() คำขอได้เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่ปัจจุบันได้
ListVersionsAsyncThrottleListVersionsAsync ถูกละติน คำขอถูกจัดการ จำกัดListVersionsAsync() คำขอได้เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่ปัจจุบันได้
RemoveVersionAsyncThrottleRemoveVersionAsync ถูกละติน คำขอถูกจัดการ จำกัดRemoveVersionAsync() คำขอได้เกินขนาดคิวสูงสุดและ Roblox ไม่สามารถประมวลผลคำขอในอัตราที่ปัจจุบันได้
InvalidTimestampTimestamp ต้องเป็นบวกและไม่เกินสิบในอนาคตtimestamp ที่ให้มาสำหรับ GetVersionAtTimeAsync() ไม่ถูกต้อง
StandardReadExperienceThrottledStandardRead คำขอถูกจำกัดโดยข้อกำหนดประสบการณ์คำขอไปยัง GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), หรือการอ่านของ UpdateAsync() ใน data store มาตรฐานเกินอัตราขีดจำกัดสำหรับระดับการใช้งาน StandardRead
StandardWriteExperienceThrottledStandardWrite คำขอถูกจำกัดโดยข้อกำหนดประสบการณ์คำขอไปยัง SetAsync(), IncrementAsync(), หรือการเขียนของ UpdateAsync() ใน data store มาตรฐานเกินอัตราขีดจำกัดสำหรับระดับการใช้งาน StandardWrite
StandardListExperienceThrottledStandardList คำขอถูกจำกัดโดยข้อกำหนดประสบการณ์คำขอไปยัง ListKeysAsync(), ListVersionsAsync(), หรือ ListDataStoresAsync() ใน data store มาตรฐานเกินอัตราขีดจำกัดสำหรับระดับการใช้งาน StandardList
StandardRemoveExperienceThrottledStandardRemove คำขอถูกจำกัดโดยข้อกำหนดประสบการณ์คำขอไปยัง RemoveAsync() ใน data store มาตรฐานเกินอัตราขีดจำกัดสำหรับระดับการใช้งาน StandardRemove
OrderedReadExperienceThrottledOrderedRead คำขอถูกจำกัดโดยข้อกำหนดประสบการณ์คำขอไปยัง GetAsync() หรือการอ่านจาก UpdateAsync() ใน data store ที่สั่งให้เกินอัตราขีดจำกัดสำหรับระดับการใช้งาน OrderedRead
OrderedWriteExperienceThrottledOrderedWrite คำขอถูกจำกัดโดยข้อกำหนดประสบการณ์คำขอไปยัง SetAsync(), IncrementAsync(), หรือการเขียนของ UpdateAsync() ใน data store ที่สั่งให้เกินอัตราขีดจำกัดสำหรับระดับการใช้งาน OrderedWrite
OrderedListExperienceThrottledOrderedList คำขอถูกจำกัดโดยข้อกำหนดประสบการณ์คำขอไปยัง GetSortedAsync() ใน data store ที่สั่งให้เกินอัตราขีดจำกัดสำหรับระดับการใช้งาน OrderedList
OrderedRemoveExperienceThrottledOrderedRemove คำขอถูกจำกัดโดยข้อกำหนดประสบการณ์คำขอไปยัง RemoveAsync() ใน data store ที่สั่งให้เกินอัตราขีดจำกัดสำหรับระดับการใช้งาน OrderedRemove
StandardReadGameServerThrottledStandardRead คำขอถูกจำกัดโดยข้อกำหนดเซิร์ฟเวอร์เกมหรือคิวของคำขอเต็มคำขอไปยัง GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), หรือการอ่านของ UpdateAsync() ใน data store มาตรฐานเกินอัตราขีดจำกัดสำหรับระดับเซิร์ฟเวอร์เกม StandardRead
StandardWriteGameServerThrottledStandardWrite คำขอถูกจำกัดโดยข้อกำหนดเซิร์ฟเวอร์เกมหรือคิวของคำขอเต็มคำขอไปยัง SetAsync(), IncrementAsync(), หรือการเขียนของ UpdateAsync() ใน data store มาตรฐานเกินอัตราขีดจำกัดสำหรับระดับเซิร์ฟเวอร์เกม StandardWrite
StandardListGameServerThrottledStandardList คำขอถูกจำกัดโดยข้อกำหนดเซิร์ฟเวอร์เกมหรือคิวของคำขอเต็มคำขอไปยัง ListKeysAsync(), ListVersionsAsync(), หรือ ListDataStoresAsync() ใน data store มาตรฐานเกินอัตราขีดจำกัดสำหรับระดับเซิร์ฟเวอร์เกม StandardList
StandardRemoveGameServerThrottledStandardRemove คำขอถูกจำกัดโดยข้อกำหนดเซิร์ฟเวอร์เกมหรือคิวของคำขอเต็มคำขอไปยัง RemoveAsync() ใน data store มาตรฐานเกินอัตราขีดจำกัดสำหรับระดับเซิร์ฟเวอร์เกม StandardRemove
OrderedReadGameServerThrottledOrderedRead คำขอถูกจำกัดโดยข้อกำหนดเซิร์ฟเวอร์เกมหรือคิวของคำขอเต็มคำขอไปยัง GetAsync() หรือการอ่านจาก UpdateAsync() ใน data store ที่สั่งให้เกินอัตราขีดจำกัดสำหรับระดับเซิร์ฟเวอร์เกม OrderedRead
OrderedWriteGameServerThrottledOrderedWrite คำขอถูกจำกัดโดยข้อกำหนดเซิร์ฟเวอร์เกมหรือคิวของคำขอเต็มคำขอไปยัง SetAsync(), IncrementAsync(), หรือการเขียนของ UpdateAsync() ใน data store ที่สั่งให้เกินอัตราขีดจำกัดสำหรับระดับเซิร์ฟเวอร์เกม OrderedWrite
OrderedListGameServerThrottledOrderedList คำขอถูกจำกัดโดยข้อกำหนดเซิร์ฟเวอร์เกมหรือคิวของคำขอเต็มคำขอไปยัง GetSortedAsync() ใน data store ที่สั่งให้เกินอัตราขีดจำกัดสำหรับระดับเซิร์ฟเวอร์เกม OrderedList
OrderedRemoveGameServerThrottledOrderedRemove คำขอถูกจำกัดโดยข้อกำหนดเซิร์ฟเวอร์เกมหรือคิวของคำขอเต็มคำขอไปยัง RemoveAsync() ใน data store ที่สั่งให้เกินอัตราขีดจำกัดสำหรับระดับเซิร์ฟเวอร์เกม OrderedRemove

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

ชื่อข้อผิดพลาดข้อความข้อผิดพลาดหมายเหตุ
DatastoreDeleteddata store ถูกลบการดำเนินการใน data store ไม่สามารถเกิดขึ้นได้เพราะ data store ถูกลบไปก่อนหน้านี้
DatastoreThrottledอัตราเรquest เกินขีดจำกัดสูงสุดที่อนุญาตสำหรับ datastoreมีคำขอมากเกินไปถูกส่งไปยัง data store เดียว
InternalServerErrorเกิดข้อผิดพลาดเซิร์ฟเวอร์ภายในข้อผิดพลาดเป็นครั้งคราวบนเซิร์ฟเวอร์ Roblox ลองอีกครั้ง โดยเฉพาะอย่างยิ่งด้วยการถอยแบบเกินการ
InvalidExclusiveStartKeyคีย์เริ่มต้นที่ไม่ซ้ำกันที่ให้มาไม่ถูกต้องคีย์เริ่มต้นที่ไม่ซ้ำกัน (ลูกศร) ที่ให้มากับการดำเนินการรายการเช่น ListKeysAsync() ไม่ถูกต้อง
InvalidPlaceสถานที่ที่ให้มาไม่ถูกต้องไม่มีรหัสจักรวาลที่ตรงกับสถานที่ ลองอีกครั้งในภายหลัง
InvalidTargetเป้าหมายที่ให้มาไม่ถูกต้องชื่อคีย์ data store ที่สั่งให้เกินขีดจำกัด 50 ตัวอักษร
InvalidUniverseจักรวาลที่ให้มไม่ถูกต้องไม่มีรหัส Place ที่ตรงกับจักรวาล ลองอีกครั้งในภายหลัง
InvalidUserIdsรหัสผู้ใช้งานที่ให้มามีรูปแบบไม่ถูกต้องไม่สามารถแยกวิเคราะห์รหัสผู้ใช้งานได้
KeyThrottledอัตราการร้องขอเกินขีดจำกัดที่อนุญาตสูงสุดสำหรับคีย์รหัสคำขอเกินขีดจำกัดอัตราrequests สูงสุดที่อนุญาตสำหรับคีย์เดียว
KeyNotFoundคีย์ที่ร้องขอไม่มีอยู่คีย์ไม่มีอยู่
N/Aไม่สามารถไปยังหน้าถัดไปข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณเรียก Pages:AdvanceToNextPageAsync() บนหน้าสุดท้าย
StandardReadExperienceThrottledอัตราการอ่านมาตรฐานเกินขีดจำกัดสูงสุดที่อนุญาตสำหรับประสบการณ์คำขอไปยัง GetAsync(), GetVersionAsync(), GetVersionAtTimeAsync(), หรือการอ่านของ UpdateAsync() ใน data store มาตรฐานเกินขีดจำกัดอัตราการอ่านมาตรฐาน
StandardWriteExperienceThrottledอัตราการเขียนมาตรฐานเกินขีดจำกัดสูงสุดที่อนุญาตสำหรับประสบการณ์คำขอไปยัง SetAsync(), IncrementAsync(), หรือการเขียนของ UpdateAsync() ใน data store มาตรฐานเกินขีดจำกัดอัตราการเขียนมาตรฐาน
StandardListExperienceThrottledอัตราการร้องขอรายการมาตรฐานเกินขีดจำกัดสูงสุดที่อนุญาตสำหรับประสบการณ์คำขอไปยัง ListKeysAsync(), ListVersionsAsync(), หรือ ListDataStoresAsync() ใน data store มาตรฐานเกินขีดจำกัดอัตราการร้องขอรายการมาตรฐาน
StandardRemoveExperienceThrottledอัตราการลบมาตรฐานเกินขีดจำกัดสูงสุดที่อนุญาตสำหรับประสบการณ์คำขอไปยัง RemoveAsync() ใน data store มาตรฐานเกินขีดจำกัดมาตรฐานการลบ
OrderedReadExperienceThrottledอัตราการอ่านที่สั่งให้เกินขีดจำกัดสูงสุดที่อนุญาตสำหรับประสบการณ์คำขอไปยัง GetAsync() หรือการอ่านของ 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 สามารถถูกจำกัดโดยการใช้งานภายในประสบการณ์ (และในทางกลับกัน) โปรดดู Control rate limits สำหรับข้อมูลเพิ่มเติม
data stores แบบมาตรฐาน
ประเภทคำขอGame server APIOpen Cloud APIขีดจำกัดที่แชร์ (คำขอต่อหนึ่งนาที)
อ่านGetAsync()
GetVersionAsync()
GetVersionAtTimeAsync()
UpdateAsync()
เรียกดูข้อมูลจาก Data Store300 + ผู้ใช้พร้อมกัน × 40
เขียนSetAsync()
IncrementAsync()
UpdateAsync()
สร้าง, อัปเดต, เพิ่มข้อมูลเข้าบันทึก Data Store300 + ผู้ใช้พร้อมกัน × 20
รายการListDataStoresAsync()
ListKeysAsync()
ListVersionsAsync()
รายการ Data Stores, รายการข้อมูล Data Store, รายการการแก้ไขข้อมูล Data Store300 + ผู้ใช้พร้อมกัน × 2
ลบRemoveAsync()ลบข้อมูลจาก Data Store, ลบ Data Store, คืนค่าข้อมูลจาก Data Store300 + ผู้ใช้พร้อมกัน × 40
data stores แบบสั่ง
ประเภทคำขอGame server APIOpen Cloud APIขีดจำกัดที่แชร์ (คำขอต่อหนึ่งนาที)
อ่านGetAsync()
UpdateAsync()
เรียกดูข้อมูลจาก Ordered Data Store300 + ผู้ใช้พร้อมกัน × 40
เขียนSetAsync()
IncrementAsync()
UpdateAsync()
สร้าง, อัปเดต, เพิ่มข้อมูลเข้าบันทึก Ordered Data Store300 + ผู้ใช้พร้อมกัน × 20
รายการGetSortedAsync()รายการข้อมูลจาก Ordered Data Store300 + ผู้ใช้พร้อมกัน × 2
ลบRemoveAsync()ลบข้อมูลจาก Ordered Data Store300 + ผู้ใช้พร้อมกัน × 40
ควบคุมขีดจำกัดอัตรา

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

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

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

Open Cloud

คำร้องของ Open Cloud จำเป็นต้องมีการแก้ไขปัญหาการจำกัดอัตรา เราขอแนะนำแนวทางหนึ่งในวิธีการต่อไปนี้:

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

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

const apiKey = process.env.API_KEY;
if (!apiKey) {
throw new Error('The API_KEY environment variable is not set.');
}
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(`\nProcessing entry: ${path}`);
const currentData = await getEntry(path);
currentData.value.currency += 10;
const payload = { value: currentData.value };
const updateResponse = await updateEntry(path, payload);
console.log(`Status: ${updateResponse.status}`);
console.log(`Response: ${await updateResponse.text()}`);
}
} catch (error) {
console.error('An error occurred during execution:', error);
}
})();

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

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

ระบบจัดการนี้สามารถ กำหนดค่าโดยสร้าง โดยใช้ SetRateLimitForRequestType() API ซึ่งเป็น API ที่สร้างขึ้นเพื่อให้สามารถกำหนดค่าให้มีขีดจำกัดการเข้าถึงในแต่ละประเภทคำขอ

ขีดจำกัดอัตราเริ่มต้น เหล่านี้ จะมีผลบังคับใช้หาก API ไม่ถูกเรียกใช้:

data stores แบบมาตรฐาน
ประเภทคำขอDataStoreRequestType EnumGame server APIคำขอต่อหนึ่งนาที
อ่าน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 EnumGame server APIคำขอต่อหนึ่งนาที
อ่านOrderedReadGetAsync()
UpdateAsync()
60 + numPlayers × 40
เขียนOrderedWriteSetAsync()
IncrementAsync()
UpdateAsync()
30 + numPlayers × 5
รายการOrderedListGetSortedAsync()5 + numPlayers × 2
ลบOrderedRemoveRemoveAsync()30 + numPlayers × 5

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

data stores จะจำกัดปริมาณข้อมูลที่สามารถใช้ได้ต่อการเข้าถึง

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

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

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

ขีดจำกัด Metadata

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

คอมโพเนนต์จำนวนตัวอักษรสูงสุด
ชื่อคีย์50
ค่า250
คู่คีย์-ค่า300

ขีดจำกัดการผ่าน

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

ประเภทคำขอGame server APIOpen Cloud APIขีดจำกัด
อ่าน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 เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ