Совместное использование глобального словаря между запросами - PullRequest
0 голосов
/ 09 января 2019

В настоящее время я разрабатываю онлайн-игру в реальном времени, которая использует глобальный словарь для хранения всех игровых комнат. Если пользователь пытается войти в игру, скрипт проверяет словарь в поисках пустой комнаты. Если пустая комната не найдена, в словарь добавляется новый объект комнаты, чтобы другие зарегистрированные пользователи могли войти в игровую комнату.

Проблема в том, что использование глобального словаря для такой задачи не очень хорошая идея, как указано в следующих вопросах: Безопасны ли глобальные переменные в потоке в флаконе? Как обмениваться данными между запросами? и Сохранение глобального состояния в приложении с колбами

В ответах было рекомендовано хранить запросы на совместное использование общих данных в базах данных или в memcached .. Если я захочу сделать это, используя способ базы данных, должен ли я хранить весь dict в базе данных каждый раз, когда он запрашивается? Есть ли лучший и безопасный способ сделать это?

1 Ответ

0 голосов
/ 09 января 2019

я должен хранить весь dict в базе данных каждый раз, когда он был запрошен

Если вы используете базу данных (например, SQLite), весь dict уже должен быть в базе данных. Затем вы можете запросить базу данных, когда вам нужна информация об игровых комнатах. Не сохраняйте все данные с общими данными в памяти, перемещайте все общие данные в базу данных, удаляйте данные с общими данными из памяти, запрашивайте базу данных всякий раз, когда вам нужны общие данные, и обновляйте базу данных при изменении общих данных.

Я предлагаю вам попробуйте . Я думаю, вы найдете базу данных достаточно быстро (и безопасно).

Обратите внимание, что база данных также имеет свойства ACID , которые можно использовать и на которые можно положиться. Значение этих свойств ACID может быть неясно в данный момент, но это может измениться, чем больше вы используете базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...