Уважаемые форумчане, подскажите пожалуйста! Нужно реализовать систему хранения очков пользователей в игре и рейтинги на базе Redis (http://redis.io/). Под рейтингом здесь понимается список игроков, сортированный по убыванию количества очков (игрок1 - 666, игрок2 - 13, игрок3 - 0 и пр.). Виды рейтингов: - за день - за месяц - за год Необходимый функционал: 1. Добавить/обновить очки пользователя в рейтинг. 2. Показать рейтинг пользователей любого типа с поддержкой постраничного вывода (aka pagination). 3. Удалить нехорошего читера из рейтинга.
ZREVRANK - это его место в рейтинге будет Топ 10 будет ZREVRANGE key 0 10 и т.д... в общем там все просто и с примерами
А как мне создать базу с количеством игроков 5 * 10 ^ 7? Добавлено спустя 53 секунды: И еще вопрос, на каком фреймворке это делать, и нужен ли фреймворк вообще? Подойдет ли Webasyst?
В редисе не нужно создавать базу. Но следует учитывать, что вся база редиса должна вмещаться в оперативную память. Просто ZADD и вперед Добавлено спустя 2 минуты 33 секунды: На чем хотите, на том и делайте. У вас должна быть библиотека взаимодействия с редисом http://redis.io/clients - выбирайте, какой там вам нравится для PHP. Можно просто модуль поставить (pecl).
Мне нужно это все сделать на PHP. Я поставил на комп Denwer 3 и подключил к нему библиотеки PHP 5.3.13. Добавлено спустя 2 минуты 4 секунды: Желательно все то дело сделать с помощью Yii 2 но я не разобрался с его установкой. Через обычную cmd не устанавливается, нужен какой-нибудь сторонний консольный терминал.
какой терминал? фреймворк ставится через композер, командной строки в cmd достаточно. но если захочешь что-то *nix подобное внутри винды, то поставь cygwin. я пользуюсь и очень доволен.
В общем, как я понял я записываю все данные в редис, и потом создаю пхп-приложение которое будет выполнять эти 3 действия?
Ребята, кто возьмется помочь мне воплотить это в жизнь? Я еще не особо свободно "плаваю" в данном языке. У кого будет свободное время, которое не жалко потратить на это, буду ждать. Кто сможет, добавьте в друзья, пожалуйста У меня Deadline на все это до конца воскресенья. Всем ответившим здесь большое спасибо. И заранее спасибо тем кто откликнется.
При попытке добавления очков рейтинга пользователям Код (Text): sadd players:igor kola john vova (integrer) 3 zadd players:igor 100 kola 95 john 90 vova 80 ERR syntax error выскакивает ERR syntax error. В чем может быть проблема?
А ты понимаешь что ты делаешь? Напиши по пунктам, что хочешь сделать, и укажи на коком возникает ошибка с какими входными данными и текстом ошибки.
Сначала, я добавлю нескольких пользователей. Потом с помощью ключа ZADD пытаюсь добавить очки рейтинга в значeния igor kola john vova. При добавлении очков выдает ошибку ERR syntax error. В заголовке темы написано что мне нужно сделать. Может я что-то не так делаю?
А что говорит документация по ZADD? Ты сверил свои команды с документацией? Если нужно срочно, может просто готовое использовать: https://github.com/matsubo/redis-ranking/blob/master/sample/usecase.php
Код (Text): sadd players Добавление множества (в моем случае игроков). Код (Text): zadd players Упорядочивание множества по критерию рейтинга.
http://redis.io/commands/ZADD ZADD key score member [score member ...] ты нарушил score member, у тебя в команде последняя цифра 80, но нет member для неё, по этому и пишут что ошибка в синтаксисе
https://github.com/matsubo/redis-ranking/blob/master/sample/usecase.php А как мне поставить количество своих игроков например 100? Как создать 3 списка по сортировке: -день; -месяц; -год. Добавлено спустя 2 минуты 21 секунду: И какая библиотека нужна для этого кода, что бы он заработал с Redis-ом?
По ссылке пример использование библиотеки https://github.com/matsubo/redis-ranking Что значит 100? Там же есть пример выборки для ТОП 2: var_dump($ranking->getRange(0, 1, true)); Что за сортировка по дням и т.д. ?