Cache e Redis

Completato

È fondamentale che le app rispondano rapidamente alle richieste degli utenti. Quando un sito Web è lento, i visitatori si sentono subito frustrati e abbandonano il sito, forse per visitare siti concorrenti. Come è possibile creare un'app che risponda rapidamente, anche quando viene richiesto un set complesso di dati? Un modo per accelerare l'app consiste nell'usare una cache.

Si supponga di lavorare per un rivenditore di attrezzature da esterno. La nuova app Web è in fase di sviluppo e diversi microservizi sono quasi alla First Release, ma alcune pagine vengono caricate troppo lentamente. Si vuole trovare un modo per aumentare le prestazioni.

In questa unità si apprenderà il modo in cui la memorizzazione nella cache può contribuire a migliorare la velocità di un'app Web.

Che cos'è Redis?

Redis è un archivio informazioni in memoria open source. Il nome è l’acronimo di Remote Dictionary Server. Forse la caratteristica più importante di Redis è la bassa latenza per le operazioni di lettura e scrittura, ottenuta grazie alla progettazione e al fatto che contiene tutte le informazioni in memoria. Redis include funzionalità di database e broker di messaggi, ma è ampiamente conosciuto come sistema di memorizzazione nella cache.

Miglioramento delle prestazioni di una cache

Le cache possono essere usate per migliorare le prestazioni di molti sistemi che richiedono tempo per costruire risposte per gli utenti. Si consideri, ad esempio, un sito Web di e-commerce, costruito da microservizi. Quando un utente vuole sapere quali articoli si trovano nel carrello degli acquisti, il sistema potrebbe:

  1. Ricevere la richiesta nel microservizio dell'app Web.
  2. Chiamare il microservizio di autenticazione per controllare l'identità degli utenti, se questi sono connessi.
  3. Chiamare il microservizio del carrello acquisti per scoprire quali articoli e quali quantità si trovano nel carrello.
  4. Chiamare il microservizio del catalogo prodotti per ottenere i dettagli completi di ogni prodotto.
  5. Chiamare il microservizio delle immagini per ottenere BLOB di immagini per ogni prodotto.
  6. Chiamare il microservizio di inventario delle scorte per controllare i livelli delle scorte.
  7. Chiamare il microservizio di spedizione per calcolare i costi di spedizione in base alla posizione e alle preferenze dell'utente.

I passaggi esatti possono variare a seconda della progettazione e delle funzionalità aziendali, ma il processo può essere complesso e coinvolgere molti microservizi e servizi di backup diversi. Anche se ogni microservizio deve essere configurato e dotato di risorse per ottenere buone prestazioni, la costruzione della risposta richiede inevitabilmente un po’ di tempo.

Si supponga ora che l'utente aggiorni la pagina. Invece di ricostruire l'intera risposta HTML da zero, se la pagina o alcune sezioni sono state archiviate in una cache, questa può essere restituita all'utente molto più velocemente della richiesta originale. Questa risposta rapida consente di rendere un'app Web più reattiva e accogliente per gli utenti.

Considerazioni sulla cache

Quando si usa la memorizzazione nella cache, una decisione fondamentale in termini di progettazione riguarda il tempo durante il quale memorizzare nella cache un determinato contenuto. Nel carrello acquisti, ad esempio, se la pagina del carrello completato viene memorizzata nella cache per un'ora, durante la quale è probabile che vengano effettuati altri ordini, la pagina memorizzata nella cache a volte segnalerà i livelli di scorte non aggiornati, e gli utenti potrebbero dover attendere più tempo del previsto per la consegna. Se si memorizza nella cache la pagina per un solo minuto, si può essere più sicuri che i livelli delle scorte saranno accurati, ma il miglioramento delle prestazioni potrebbe essere minimo o nullo. Pertanto, quando si sceglie per quanto tempo memorizzare nella cache le informazioni, prendere in considerazione:

  • Con quale frequenza cambiano le informazioni? Ad esempio, i livelli delle scorte possono cambiare più volte nell’arco di un'ora, ma i nuovi prodotti possono essere visualizzati nel catalogo solo ogni pochi mesi.
  • Quanto è importante che gli utenti visualizzino le informazioni aggiornate? Ad esempio, i livelli delle scorte possono essere fondamentali, mentre la revisione dei nuovi prodotti può essere considerata meno critica in termini di tempo.
  • Con quale frequenza è probabile che si ricevano richieste relative alle informazioni? La memorizzazione nella cache delle informazioni più diffuse consente di migliorare le prestazioni perché il sistema può usarle dalla cache più volte.

Uso di Redis nei progetti .NET Aspire

Redis è una scelta diffusa per la memorizzazione nella cache in un'applicazione nativa del cloud. .NET Aspire offre tre componenti utilizzabili per interagire con un servizio Redis:

  • Componente StackExchange Redis .NET Aspire: Usare questo componente per interagire direttamente con un server Redis. Ad esempio, è possibile usarlo per salvare e recuperare i valori nel database Redis o sottoscrivere i messaggi inviati a un canale. Poiché questo componente non è incentrato sulla memorizzazione nella cache, non verrà considerato più avanti in questo modulo.
  • Componente di memorizzazione nella cache dell'output di .NET Aspire StackExchange Redis: Usare questo componente per memorizzare nella cache le risposte HTTP complete.
  • Componente di memorizzazione nella cache distribuita di .NET Aspire StackExchange Redis: Usare questo componente di memorizzazione nella cache per archiviare e recuperare dati da una cache distribuita. La memorizzazione nella cache distribuita descrive un'architettura in cui più microservizi o altri servizi client condividono una singola cache.

Altre informazioni