Come implementare la cache nelle app Web?

4

Queste sono davvero due domande. Sto facendo un progetto per l'università per immagazzinare le statistiche dei giocatori di baseball, ma dai dati di baseball devo calcolare il punteggio per anno per il giocatore che è stato mostrato. Lo sfondo è, diciamo che 10.000 utenti colpiscono il giocatore "Alex Rodriguez", l'applicazione deve calcolare 10.000 le statistiche di A-Rod di anni in cui è possibile leggerlo solo da alcuni dove è salvato il tempo. Qui io vado:

  1. Qual è il metodo migliore per memorizzare nella cache questo tipo di dati? Devo utilizzare lo stesso database e alcuni valori temporali nello stesso database o creare un servizio Web per questo?

  2. Cosa stai leggendo sulla memorizzazione nella cache web, quindi mi raccomando?

posta Jhonnytunes 10.04.2012 - 15:32
fonte

4 risposte

5

Insanity: doing the same thing over and over again and expecting different results.

Albert Einstein

Calcola una volta memorizzato il risultato nel database.

Solo elimina questo risultato se i dati sottostanti cambiano.

Quando un utente richiede le statistiche di un determinato utente, il pugno controlla la cache. Se esiste, restituiscilo immediatamente, altrimenti esegui il calcolo e memorizzalo.

    
risposta data 10.04.2012 - 17:19
fonte
0
  1. È possibile mantenere una cache in memoria, se è abbastanza piccola. In caso contrario, è possibile memorizzare la cache nello stesso database che si utilizza per conservare i dati primari.

    Non devi creare un servizio web, a meno che tu non stia utilizzando i servizi web per accedere ai dati primari nel tuo database.

  2. Puoi iniziare a leggere sulla memorizzazione nella cache del database qui .

risposta data 10.04.2012 - 15:39
fonte
0

Ci sono molte opzioni a seconda delle tecnologie che stai utilizzando.

Il mio primo pensiero è che è possibile pre-calcolare tutte le statistiche in anticipo e memorizzarle nel database. Se il database è sotto il tuo controllo, puoi facilmente aggiungerlo al database. Se è di terze parti, forse dovresti creare il tuo database personale che utilizza quello di terze parti come dati di origine.

Se il sistema verrà aggiornato nel tempo, potresti avere un processo notturno che ricalcola tutte le statistiche ogni notte. In questo modo, i dati saranno sempre aggiornati.

Con questo, il tuo database essenzialmente sostituisce la necessità nella cache dell'applicazione.

Non sono sicuro che tu abbia bisogno di un servizio web per questo. Questa è una decisione architettonica che ha poco a che fare con la tua domanda sulla memorizzazione dei dati nella cache da qualche parte nella tua app (almeno per me non lo è).

    
risposta data 10.04.2012 - 15:59
fonte
0

Prima di tutto è meglio memorizzare i risultati calcolati (cache) in memcache, redis o altro in memorie di chiavi / valori. In memoria memorizza le cache in modo rapido e adatto come memoria cache.

La mia soluzione (e per tutti gli sviluppatori e gli sviluppatori di Django) è decoratori Python che aggancia un metodo e gira prima e / o cambia il comportamento del metodo uncinato.

Ho sviluppato un metodo hash che accetta il nome del metodo e i parametri per il calcolo dell'hash per la chiave . Successivamente questo decoratore prende il risultato di questo metodo e memorizza il risultato calcolato come un valore di chiave .

Poiché decoratore viene eseguito prima del metodo, controlla sempre memcache per il valore corrispondente all'hash dei parametri.

    
risposta data 10.10.2015 - 23:46
fonte

Leggi altre domande sui tag