Datastore limitations and best practices queries

Hi guys I am trying to evaluate my scripts to ensure they are expandable and I noticed that SetAsync is limited to 60 + (numPlayers × 10).

I have the below querys i would like to figure out:

  1. Is the limitation based off a single server or all servers in an experience
  2. Taking into account this limitation should save loops be greater or equal to 1 minute to ensure caps are not met
  3. If I were to save every couple of seconds, if I were to reach the cap what symptoms would occur in terms of the data saved
  4. Is the best way to ensure Dev Product and Gamepass Purchase is to have a removing and serverclose event to ensure it saves
  5. If a loop is calling a savedata function and the server closed and runs the same savedata function do they run separately or does the new called function override the last one

I would recommend saving at the end up the game using UpdateAsync instead of SetAsync


  1. Looks like that limit is for each server, not all servers combined.

  2. I personally do 60 - 90 seconds.

  3. I heard it might get corrupted. But i think it’s just that it won’t save until the other requests are fulfilled.

  4. You can do that or just make a request with a delay so it can save without waiting for the player to leave or the server to shutdown but this may be a little risky imo.

  5. In one of my games, they reach the cap (somehow) and it seems only one of them saves while the other is cancelled because the player isn’t in the game to have the data saved so it still saves but one of them gets cancelled.

1 Like

In your opinion why would you recommend UpdateAsync i have read into it and it seems to be safer only when more than a single server is writing data to a specific key which in my situation it doesn’t apply, would you recommend a mix of UpdateAsync and SetAsync when needed to ensure the server is efficient as UpdateAsync is slower then SetAsync.

Awesome thanks for that information, just needing to ensure the script is written efficiently before release :slight_smile:

1 Like

I recommend you look at this post here

1 Like

This is in regards to point 5 upon testing it does seem to cancel the loop and the player removing takes priority