2013-05-14 2 views
2

У меня есть приложение django. Приложение является обычным приложением. Все работает отлично для меня.Подключение моего приложения django к установке redis

Я хочу реализовать таблицу лидеров на данный момент. Прочитайте пару мест, которые redis помогает в этом. И действительно потрясающе. Поэтому я установил и настроил redis на сервере.

Минимальное представление профиля пользователя для меня:

class UserProfile(models.Model): 

    user = models.OneToOneField(User) 
    invited_friends = models.BooleanField(default=False) 
    filled_wishlist = models.BooleanField(default=False) 
    upvote = models.IntegerField() 
    downvote = models.IntegerField() 

    @property 
    def reputation(self): 
     return int(confidence_fixed(self.upvote, self.downvote)*100) 

Основываясь на этой репутации собственности, я получаю значение. Все это происходит на бэкэнде PostgreSQL db.

Теперь, что я хочу сделать, возьмите эти оценки, поместите их в хранилище ключей redis и создайте таблицу лидеров. Существует библиотека superawesome Redis для реализации лидеров: https://github.com/agoragames/leaderboard-python

Так что мой вопрос, учитывая мой Redis сервер работает скажу на XXX.XXX.XX.XX:6342 Как подключить мое питон/Джанго приложения к серверу Redis, а также обновлению КВ магазина, и как только появляются некоторые цифры, как я могу получить представление и отображение?

ответ

1

Я думаю, что вы на правильном пути с библиотекой лидеров-питонов.

Сначала вам нужно будет написать сценарий onetime, чтобы перенести данные из вашей модели на redis с помощью leaderboard-python.

# Create a new leaderboard 
reputation_lb = Leaderboard('reputation') 

for profile in UserProfile.objects.all(): 
    reputation.rank_member('user_%i' % profile.user.pk, profile.reputation) 

Кроме того, необходимо будет создать еще одно свойство на модели UserProfile, получающую репутацию из таблиц лидеров-питона.

Тогда вы, скорее всего, захотите обновить оценку, либо дублируете информацию в базе данных, либо продолжаете использовать свойство репутации для обновления таблицы лидеров или просто увеличиваете/уменьшаете счет, хранящийся в redis.

Чтение библиотеки лидеров-питонов неплохое и должно содержать все примеры, необходимые для его создания.

0

Для будущих Googlers, так сказать Leaderboard, как подключиться к серверу Redis это, указав несколько больше аргументов в конструкторе Leaderboard:

reputation_lb = Leaderboard («репутация», хозяин = "xyz.com », порт =„1234“)

Более подробно о том, какие варианты поддерживаются, можно найти в конструкторе кода для Leaderboard здесь: http://pydoc.net/Python/leaderboard/2.8.0/leaderboard/