Alixx
@Alixx

Postgresql или redis для данных, используемых в сокетах?

Здравствуйте.
Для браузерной игры на php будут использоваться сокеты, реализованные на node.js. Сокеты используются для карт, на которых взаимодействуют игроки. Игроки постоянно присылают данные о своих действиях, на сервере проверяем данные и отправляем ответ игроку, а в случае, когда он изменил свои координаты, то отправляем всем другим игрокам данные об этом (у них на клиенте отображается этот игрок на новых координатах). Соответственно, при обработке запросов постоянно используем и обновляем данные. Вопрос, как лучше организовать их хранение?
Сразу в postgresql хранить и при каждом запросе от каждого игрока брать оттуда данные и туда, собственно, сохранять ИЛИ хранить в redis и при каждом запросе брать оттуда, а если в redis’е нет нужных данных, то уже брать из postgresql, и, конечно, периодически сохранять все данные из redis в postgresql.
Postgresql справится с такой нагрузкой?
Понятно, что ещё важно оптимизировать код, но сейчас поставлена задача решить, что использовать – postgresql или redis?
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ответы на вопрос 2
ky0
@ky0
Миллиардер, филантроп, патологический лгун
В общем случае, если данные позволяют их кэшировать, а не трогать каждый раз базу - лучше кэшировать. Более конкретно должен решать системный архитектор, исходя из специфики проекта.
Ответ написан
Посмотрите в сторону tarantool - он хранит данные в ОЗУ и имеет очень быструю запись + в нём можно хранить более сложные данные, чем просто k-v.

Но ещё стоит подумать над тем, чтобы не на каждый чих сохранять данные в бд, а например во время игры их хранить в ОЗУ сервера, а при отключении игрока уже сохранять последние координаты в БД.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы