Mysql 用Django和Redis实现评分算法

Mysql 用Django和Redis实现评分算法,mysql,django,redis,Mysql,Django,Redis,我使用DjangoREST&MySQL作为mobiel应用程序的后端。我有两个模型,User和Feed,对于api/feeds/的任何调用,都会返回由Feed的参数处创建的为经过身份验证的用户订购的所有提要 然而,我需要通过简单的评分算法为每个用户定制提要的顺序。算法的细节并不重要,但我基本上需要将每个卡片馈送对的分数存储在表中,如UserFeedScore 问题是,当用户和提要的数量增加时,该表将增长得非常快,因为每个用户提要对都有一行。此外,对于每个用户的活动(如,评论等),该用户的每个提要

我使用DjangoREST&MySQL作为mobiel应用程序的后端。我有两个模型,
User
Feed
,对于
api/feeds/
的任何调用,都会返回由Feed的
参数处创建的
为经过身份验证的用户订购的所有提要

然而,我需要通过简单的评分算法为每个用户定制提要的顺序。算法的细节并不重要,但我基本上需要将每个
卡片馈送
对的
分数
存储在表中,如
UserFeedScore

问题是,当用户和提要的数量增加时,该表将增长得非常快,因为每个
用户提要对都有一行。此外,对于每个用户的活动(如,评论等),该用户的每个提要的分数将被更新,最终将耗尽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)

为什么您认为Redis在存储大量记录方面会比MySQL做得更好?您所模拟的是
用户
提要
之间的大量关系,以及一个自定义的直通表。Redis作为缓存层可能很有用,但我会首先将其构建为一个基本的Django/MySQL应用程序,并且只有在出现实际问题时才对其进行调整,而且很明显,在内存(而不是磁盘)中存储和更改数据的瓶颈会更快,不是吗?你建议我只缓存Redis中的查询,并在MySQL中更新UserFeedScore表吗?不清楚你到底想解决哪个问题,其实很简单。我需要为每个用户执行的每个活动计算每个用户提要对的分数。对于所有用户,UserFeedScore表需要经常更新。此外,当取卡时,它必须加入此表并按分数订购卡。当然,我们可以在MySQL中进行更新,但最好在Redis中执行这些更新。但是,我不确定如何从redis获得分数,并通过这些分数在MySQL中查询