2013-05-14 54 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數據庫後端。

現在我想要做的是,把這些分數,把它們放在redis關鍵值存儲中,並生成一個排行榜。有一個superawesome Redis的庫實現排行榜:https://github.com/agoragames/leaderboard-python

所以我的問題是,考慮到我的Redis服務器在XXX.XXX.XX.XX:6342 如何將我的Python/Django應用程序連接到Redis的服務器,並更新KV商店運行說,一旦有一些數字,我如何獲取視圖並顯示?

回答

1

我認爲你在排行榜-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中的分數。

排行榜-python庫的自述文件非常好,應該包含構建它所需的所有示例。

0

對於未來的Google,就是爲了告訴排行榜如何連接到您的Redis的服務器是在排行榜的構造函數指定了幾個參數:

reputation_lb =排行榜(「聲譽」,主機=「xyz.com 「,port =」1234「)

關於支持哪些選項的更多細節可以在排行榜的構造函數代碼中找到:http://pydoc.net/Python/leaderboard/2.8.0/leaderboard/