将我的django应用程序连接到redis安装

时间:2013-05-14 07:33:57

标签: python django django-models redis leaderboard

我有一个django应用程序。该应用程序是一个正常的应用程一切都运行正常。

我想要实现截至目前的排行榜。阅读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数据库后端。

现在我要做的是,取这些分数,将它们放入redis键值存储区,并生成排行榜。有一个superawesome redis库用于实现排行榜:https://github.com/agoragames/leaderboard-python

所以我的问题是,鉴于我的redis服务器正在运行,请说XXX.XXX.XX.XX:6342 如何将我的python / django应用程序连接到redis服务器,并更新KV存储,一旦有一些数字,我如何获取视图并显示?

2 个答案:

答案 0 :(得分:1)

我认为你与leaderboard-python库走在正确的轨道上。

首先,您需要编写一个一次性脚本,使用leaderboard-python将数据从模型移动到redis。

# 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模型上创建另一个属性,该属性从leaderboard-python中检索信誉。

然后你很可能想要更新分数,要么你复制数据库中的信息并继续使用你的信誉属性来更新排行榜,要么只是增加/减少存储在redis中的分数。

leaderboard-python库的自述文件非常好,应该包含构建它所需的所有示例。

答案 1 :(得分:0)

对于未来的googlers,告诉Leaderboard如何连接到redis服务器的方法是在Leaderboard构造函数中指定更多参数:

reputation_lb =排行榜('声誉',主机=“xyz.com”,port =“1234”)

有关支持哪些选项的更多详细信息,请参阅排行榜的构造函数代码:http://pydoc.net/Python/leaderboard/2.8.0/leaderboard/