Redis per il caching

1

Ho sentito molto positivo su Redis ma non l'ho usato da solo. Ora voglio aggiungere un livello di cache per la mia app Web per ridurre il carico del DB, e suppongo che Redis stia bene per questo.

Ma non capisco chiaramente chi dovrebbe popolare Redis con i dati e tenerlo sincronizzato con il DB. Se ho bisogno di creare un servizio per questo, allora ovviamente conterrà qualche logica di caching. In tal caso, perché questo nuovo servizio non può memorizzare direttamente i dati della cache? Quindi, se aggiungo qualche API di accesso a questo nuovo servizio, sarà in grado di elaborare le richieste di cache dai client stessi. Perché dovrei usare Redis in questo caso?

    
posta hank 03.06.2015 - 09:34
fonte

1 risposta

2

Se il tuo servizio è ospitato su una singola macchina, è probabile che la memorizzazione nella cache della memoria abbia prestazioni migliori e sia più facile da implementare.

D'altra parte, ci sono tre situazioni in cui la memorizzazione nella cache locale non è sufficiente:

  • Non appena il servizio inizia ad essere ospitato su più server, come nel caso della maggior parte dei servizi ospitati in produzione, potrebbe essere necessario implementare la memorizzazione nella cache centralizzata¹ o distribuita² affinché i servizi condividano la stessa cache.

    In questo caso, se la tua lingua / infrastruttura / infrastruttura non ha già la funzione (come AppFabric nella comunità Microsoft), Redis appare un'alternativa eccellente.

    Si noti che allo stesso modo, si può avere un sistema installato su una singola macchina, ma scritto in più linguaggi di programmazione. Se parti diverse del sistema devono accedere alle stesse entità cache, puoi creare tu stesso il servizio di cache, o farlo in modo semplice e lasciare che Redis faccia il lavoro.

  • Redis ha molte più funzionalità rispetto ai normali sistemi di cache. Hai visto l'elenco dei comandi di Redis ? Invece, la maggior parte dei sistemi di memorizzazione nella cache è limitata a tre azioni: aggiungi, ottieni, rimuovi e alle opzioni di scadenza. Ad esempio, che dire di DECRBY ? La maggior parte delle librerie di caching che ho usato non hanno nemmeno la possibilità di incrementare / decrementare i valori, il che li rende una scelta sbagliata per i contatori, ad esempio.

    Se hai bisogno di queste funzionalità aggiuntive, Redis è ovviamente una soluzione alle tue esigenze.

  • Negli ambienti di grandi dimensioni, potrebbe essere necessario che gli amministratori di sistema siano in grado di configurare correttamente i server di caching (oltre a scegliere correttamente l'hardware per le particolari esigenze della memorizzazione nella cache). Avere un servizio di caching comune come Redis significa che quegli amministratori di sistema possono apprenderlo bene e concentrarsi sulla sua configurazione, dato che può quindi essere utilizzato da servizi scritti in qualsiasi linguaggio di programmazione.

¹ Nella memorizzazione nella cache centralizzata, tutti i client accedono allo stesso servizio di memorizzazione nella cache (che, internamente, può utilizzare anche il failover) che gestisce tutti i dati e la relativa invalidazione.

² Nella cache distribuita, ogni client memorizza le entità memorizzate nella cache. Quando un'entità viene modificata o rimossa, l'azione deve essere inviata a tutti i nodi per garantire la coerenza.

    
risposta data 03.06.2015 - 09:43
fonte

Leggi altre domande sui tag