Io uso DjangoREST & MySQL come back-end per un'app mobileiel. Ho due modelli, User e Feed e per qualsiasi chiamata a API / feed / restituisce tutti i feed per utente autenticato ordinato dal parametro created_at del feed.
Tuttavia, ho bisogno di personalizzare l'ordine dei feed per ciascun utente con un semplice algoritmo di punteggio. I dettagli dell'algoritmo non sono importanti, ma fondamentalmente ho bisogno di memorizzare il punteggio per ogni coppia di feed di carte in una tabella come UserFeedScore.
Il problema è che questa tabella crescerà molto velocemente quando il numero di utenti e feed aumenterà perché ci sarà una riga per ogni coppia di feed utente. Inoltre, per ogni attività dell'utente (come, commenti, ecc.) I punteggi per ogni feed per quell'utente saranno aggiornati che esauriranno MySQL db alla fine.
Mantenere questa tabella in Redis sembra una soluzione adeguata, ma non sono sicuro di come ordino i feed nel database MySQL per i punteggi calcolati in Redis.
Qualsiasi struttura dati Redis, suggerimenti per valori-chiave ed esempi di query Django sono apprezzati.
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)