【问题标题】:Connecting my django app to the redis installation将我的 django 应用程序连接到 redis 安装
【发布时间】:2013-05-08 09:33:27
【问题描述】:

我有一个 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键值存储,生成排行榜。有一个超棒的redis库实现排行榜:https://github.com/agoragames/leaderboard-python

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

【问题讨论】:

    标签: python django django-models redis leaderboard


    【解决方案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 库的自述文件非常好,应该包含构建它所需的所有示例。

    【讨论】:

      【解决方案2】:

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

      reputation_lb = 排行榜('reputation', host="xyz.com", port="1234")

      更多关于支持哪些选项的详细信息可以在此处的排行榜的构造函数代码中找到:http://pydoc.net/Python/leaderboard/2.8.0/leaderboard/

      【讨论】:

        猜你喜欢
        • 2020-11-30
        • 2020-09-30
        • 2018-10-21
        • 2012-07-08
        • 2018-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多