Sì, redis va bene per questo. Ma per capire l'essenza, ci sono fondamentalmente due approcci alla memorizzazione nella cache. A seconda che utilizzi un framework (e quale) o meno, potresti avere la prima opzione disponibile in standard o con l'uso di un plug-in:
- Query del database della cache, ovvero le query selezionate e i relativi risultati verranno mantenuti in redis per un accesso più rapido per un dato tempo o fino allo svuotamento della cache (utile dopo l'aggiornamento del databse). In questo caso è possibile utilizzare la cache di query mysql integrata, sarà più semplice rispetto all'utilizzo di un archivio chiave-valore aggiuntivo, oppure è possibile sovrascrivere l'integrazione del database predefinita con la propria classe utilizzando la cache (ad esempio http://pythonhosted.org /johnny-cache/).
- Caching personalizzato, ovvero creare le proprie strutture da tenere in cache e riempirle periodicamente o manualmente con i dati prelevati dal database. È più flessibile e potenzialmente più potente, perché è possibile utilizzare funzionalità redis integrate come elenchi o set ordinati, che riducono notevolmente il sovraccarico degli aggiornamenti. Richiede un po' più di codifica, ma di solito offre risultati migliori, poiché è più personalizzato. Un buon esempio è mantenere gli articoli principali sotto forma di elenco di ID redis e quindi accedere agli articoli serializzati con un ID specificato anche da redis. Puoi mantenere quell'articolo non normalizzato, ad es. l'oggetto serializzato può contenere sia l'ID utente che il nome utente, in modo da ridurre al minimo il sovraccarico di query aggiuntive.
Sta a te decidere quale approccio adottare, personalmente seguo quasi sempre l'approccio numero due. Ma, ovviamente, tutto dipende da quanto tempo hai e da cosa dovrebbe fare l'applicazione:potresti anche iniziare con la memorizzazione nella cache delle query MySQL e se i risultati non sono abbastanza buoni, passa a redis e alla memorizzazione nella cache personalizzata.