使用Django和Redis进行评分算法实现

时间:2014-12-04 15:22:33

标签: mysql django redis

我使用DjangoREST& MySQL作为mobiel app的后端。我有两个模型UserFeed,对api/feeds/的任何调用都会返回按created_at Feed参数排序的经过身份验证的用户的所有Feed。

但是,我需要通过简单的评分算法为每个用户自定义Feed的顺序。算法的细节并不重要,但我基本上需要为表score中的每个card-feed对存储UserFeedScore

问题是,当用户和Feed的数量增加时,此表会快速增长,因为每个user - feed对都会有一行。此外,对于每个用户活动(例如,评论等),将更新该用户的每个订阅源的得分,最终将耗尽MySQL数据库。

将此表保存在Redis中似乎是一个合适的解决方案,但我不确定如何通过Redis中计算的分数在MySQL数据库中订购源。

赞赏任何Redis数据结构,键值建议和Django查询示例。

class Feed(models.Model):
    text = models.CharField()
    created_by = models.ForeignKey(settings.AUTH_USER_MODEL)
    created_at = models.DateTimeField(default=timezone.now)


class UserFeedScore(models.Model)
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    feed =  models.ForeignKey(Feed)
    score = models.IntegerField(default=100)

0 个答案:

没有答案