|
|
|
Попробуй систему в действии, бесплатно и быстро. |
|
|
|
|
|
|
|
|
|
Бесплатная регистрация в трастовых каталогах и досках обьявлений. |
|
|
|
|
|
|
|
|
|
Добавь бесплатно сайт в 211 поисковые системы. Ru, Eng, Fra, Esp, Ukr. |
|
|
|
|
|
|
 |
|
Создание таблицы высших достижений в игре
Одним из возможных применений Redis является создание таблицы высших достижений (рекордов) в игре. Такая таблица хранит показатели цифровых игр на компьютерах и портативных устройствах вроде смартфонов и планшетов. Одной из широко используемых таблиц является OpenFeint, которая позволяет игроку создать онлайновый профиль, а затем сохранять свои показатели в различных играх. Игроки могут соревноваться с друзьями или самостоятельно добиваться максимальных результатов в любой выбранной игре.
В такого типа приложениях решение вопроса о хранении данных может быть гибридным. Профили могут храниться в реляционном хранилище данных, а сами показатели — в таких хранилищах данных, как Redis. Данные, необходимые для показателей, довольно просты, к ним происходят частые обращения и они часто меняются многочисленными пользователями. Один из разработчиков игры оценил количество соперников в 10 000, а количество запросов в минуту в пиковые моменты игры — в 200 000. Тем не менее система обработки запросов не должна быть излишне сложной, поскольку данные не отличаются сложностью, да и транзакционные правила здесь реально не нужны. Честно говоря, применять здесь реляционную базу данных или базу данных документов — это перебор. Поэтому наиболее подходящей будет хранилище пар ключ-значение вроде Redis.
Наиболее подходящими структурами данных для такого типа приложений в Redis являются хэш и отсортированный набор. Хэш — это идеальный вариант, поскольку информация о каждом показателе занимает больше, чем одно или два поля. Обычно сохраняются идентификатор участника, возможно, имя игрока (чтобы ограничить частоту обращений к реляционному хранилищу или хранилищу документов), возможно, название игры, если система предоставляет таблицы высших достижений более чем для одной игры, последняя дата игры, сам показатель и любая другая сопутствующая информация.
Отсортированный набор является наиболее удобной структурой данных для отслеживания только показателей и имен пользователей, обеспечивая быстрый доступ к лучшим 10 или 100 показателям.
Для создания приложения, обновляющего базу данных Redis, я преобразовал клиент-серверное TCP-приложение, созданное в главе 3, для отправки данных от TCP- клиента на сервер с последующим обновлением данных в хранилище Redis. В хранении данных с помощью TCP-сокета, а не с помощью HTTP или каких-нибудь других средств, предназначенных для игровых приложений, нет ничего необычного.
TCP-клиент принимает все, что набирается в командной строке, и отправляет это на сервер. Код абсолютно такой же, как и в листинге 3.3, поэтому повторять его я не буду. В отличие от предыдущих проверок, при запуске TCP-клиента вместо отправки данных через простые текстовые сообщения я отправляю JSON-представление информации, хранящейся в базе данных Redis. Пример имеет следующий вид:
{"member" : 400, "first_name" : "Ada", "last_name" : "Lovelace", "score" : 53455, "date" : "10/10/1840"}
Сервер изменен для преобразования строки данных, получаемой в JavaScript-объекте, и обращения к отдельным игрокам для сохранения их в хэше. Идентификатор игрока и его показатель также добавляются к отсортированному списку. В листинге далее показано измененное приложение TCP-сервера.
Для того чтобы сайт был всегда в ТОП выдачи не обязательно платить и переплачивать, достаточно добавить сайт Добавить сайт бесплатно в трастовые каталоги в белые каталоги для быстрой индексации в поисковых системах, в специально написанном бесплатном модуле.
Если Вам был полезен этот материал и Вы бы хотели сохранить ссылку на своём сайте, просто скопируйте и установите этот баннер на сайте. Мы будем очень признательны.
Пример баннера
 |
Скопируйте код на свой сайт
|
|