Maggiori dettagli su come viene utilizzata la cache Redis?

Ciao!

Ho eseguito alcuni test di carico su un’istanza di Discourse e ho notato che, quando si recuperava ripetutamente lo stesso thread di commenti, il tasso di hit della cache Redis diminuiva invece di aumentare, il che era un po’ inaspettato (per un mix di letture/scritture abbiamo visto un tasso di hit della cache fino all’85%, mentre per letture al 100% è sceso fino al 22%).

Ho fatto alcune ricerche nel codice e sui forum qui, ma non mi è molto chiaro come venga utilizzata esattamente la cache Redis. Il README afferma quanto segue:

Utilizziamo Redis come cache e per dati transitori.

Ho usato redis-cli per tracciare i comandi inviati alla cache Redis durante il suddetto test di carico, e ho visto principalmente comandi “get” per i job pianificati e per chiavi con il prefisso “__mb_backlog_id_n_” (credo che questo si riferisca a funzionalità di MessageBus).

Ho le seguenti domande:

  • C’è un modo “semplice” per cercare nel codice quali dati vengono memorizzati nella cache Redis? Mi piacerebbe poter rispondere a queste domande da solo, ma purtroppo non sono molto familiare con le applicazioni Ruby on Rails (o con Ruby in generale, in realtà). :slight_smile:
  • Essere loggati o non loggati influisce sui tassi di hit della cache? Per riferimento, il test di carico menzionato sopra utilizzava una chiave API di amministratore.
  • Dati frequentemente interrogati o piuttosto statici, come i contenuti dei post, vengono memorizzati nella cache Redis? O Redis viene utilizzato principalmente per la pianificazione dei job e l’elaborazione in background con Sidekiq e simili?

Grazie in anticipo!

4 Mi Piace

Questo è il punto principale. La cache più aggressiva si verifica per le richieste anonime, quindi ti suggerisco di riprovare il test di carico con alcuni robot anonimi.

Ci sono alcune funzioni ricercabili tramite grep, come Discourse.cache.fetch e DistributedCache.new.

Memorizziamo nella cache alcuni blob di configurazione poco frequenti, ma l’approccio per i temi consiste principalmente nel memorizzare nella cache l’intera risposta per gli anonimi, consentendo all’app di costruire una risposta toccando il DB il meno possibile.

Redis è ampiamente utilizzato per Sidekiq e MessageBus.

7 Mi Piace

Fantastico, grazie per la risposta super utile!

1 Mi Piace

Ho appena rieseguito il test di carico, ma questa volta con richieste anonime, e abbiamo visto un enorme miglioramento delle prestazioni! In precedenza riuscivamo a gestire circa 25 richieste al secondo su un singolo host, ora ne gestiamo 380! Anche il tasso di hit della cache Redis è salito da circa il 22% a circa il 66%. :slight_smile:

Ho pensato di aggiornarvi con i risultati, nel caso qualcuno fosse curioso.

Grazie ancora per l’aiuto!

1 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.