2011-02-16 1 views
0

Итак, я делаю небольшую многопользовательскую игру, и я использую php в качестве бэкэнд. Я в основном нуждаюсь в SET и GET много позиций объектов, и один объект - это один игрок, у которого в этом случае есть позиция X/Y.Использование memcached/redis/alternative для небольшой многопользовательской игры для обновления позиций объектов

Мне не нужно делать это в режиме реального времени, но, возможно, каждые 5-20 секунд с момента поворота. Я не возражаю, если я потеряю данные, так как позиции будут снова заданы клиентами время от времени.

Я думал об этом с memcached или redis. В основном каждый игрок будет «ключом», и этот ключ будет содержать объект с некоторой релевантной информацией, но самое главное, что касается позиций X/Y.

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

Я должен добавить, что речь идет, возможно, о 10 игроках здесь, следовательно, о 10 объектах с позициями x/y, которые нужно обновлять время от времени.

Можно ли это сделать, есть ли лучшее решение, чем memcached/redis? Если бы не тот из этих двух был бы лучше по производительности? Из того, что я понимаю, это почти то же самое, только что redis предлагает еще несколько функциональных возможностей (что необязательно необходимо).

О, да, я также использую APC с php. Благодаря!

ответ

0

Имея всего 10 объектов во всей модели данных, я бы сохранил их как сериализованный массив под одним ключом. Время сериализации будет бледнее по сравнению с memcached-вызовом, поэтому вы можете минимизировать количество чтений и записи на один.

Я только что проверил демо-версию redis, и это выглядит довольно аккуратно. Спасибо за ссылку. Я не могу говорить, что лучше, но memcached на PHP доказано и зрело, поэтому вы не можете ошибиться там.

+0

Да, я думаю, интересно, хотя на уровне драйвера PHP, который потребляет меньше ресурсов, новый memcache(); или новый redis(), а кто самый дешевый в ресурсах при подключении/настройке/получении материала – neph

+0

Создав агностический сервисный уровень поверх того, который вы выбираете, который предоставляет нужные вам методы модели, вы всегда можете поменять их на а другой - без изменения приложения, которое его использует. Не засоряйте свой код вызовами 'memcache :: get()'! Вместо этого размещайте те, что находятся внутри реализаций GameServiceMemcache, которые не поддерживают интерфейс GameService. –

0

Redis самый дешевый на ресурсах, особенно 32-битная версия, например. если вы используете менее 2 ГБ кэш-памяти, что, я считаю, запускает 23-разрядный Redis, даже если ваш сервер 64 бит.

 Смежные вопросы

  • Нет связанных вопросов^_^