比方說,我在我的Redis數據庫5項:與Redis的動態排序
news::id
:最後消息ID;news::list
:所有新聞ID的列表;news:n
其中n是新聞ID:包含字段的散列,如title
,url
等;news:n:upvotes
:所有用戶的標識誰upvoted的消息,從而使upvotes數量的列表。news:n:downvotes
:所有用戶的標識誰downvoted的消息,從而使downvotes數量的列表。
然後我有多個排名算法,其中rank =
:
upvotes_count
;upvotes_count - downvotes_count
;upvotes_count - downvotes_count - age
;upvotes_count/downvotes_count
;age
。
現在如何根據這些算法對這些消息進行排序?
我想過在每張選票上計算不同的排名,但是如果我介紹一種新算法,我需要計算所有新聞的新排名。
EVAL
可以幫助,但它將不會提供,直到v2.6,這肯定我不想等待。
最終,我會檢索所有消息,並把它們在一個Python列表。但它又轉化爲高內存使用率,更不用說Redis將其數據存儲在內存中的事實。
那麼,有沒有做到這一點適當的方式,或者我應該只是移動到MongoDB的?
你可以給不同的參數賦予不同的(合理的)權重嗎?比如'100000000 * upvotes_count - 10000 * downvotes_count - age'並且根據這個加權和只排序一次? – eumiro 2011-12-21 12:27:21
@eumiro Nope,**這裏的目標是能夠用不同的algos **進行排序。另請參閱我的編輯。 – seriousdev 2011-12-21 12:34:54
對不起,劫持這些評論,但你確實刪除了http://stackoverflow.com/questions/8626415/git-log-with-dulwich(git-log with Dulwich)。你找到答案了嗎? – VonC 2011-12-26 00:22:53